За последние 24 часа нас посетили 34316 программистов и 1751 робот. Сейчас ищут 965 программистов ...

автоподключение классов в регистрозависимом linux

Тема в разделе "PHP для новичков", создана пользователем osvical, 5 июл 2015.

  1. osvical

    osvical Новичок

    С нами с:
    9 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    решил перейти на линукс и познаю много новых камней под водой =) с одним локальным сервером и его правами на директории дружился два дня. не то, что на "винде" - папку с сайтом в папку домены, рестарт и все работает =) но что-то в нем есть, интересно.

    ситуация такая... если запрос к классу идет от меня в коде скрипта - проблем нет. я пишу с заглавной буквы, верблюжья аннотация имеет горбы в нужных местах. с регистром в названиях файлов, которые подключатся, все совпадает. но моя разрабатываемая вело-цмс может сама искать классы на основании адресной строки. например bicycle.com/page/666 попросит подключиться класс page и пусть уже он разбирается, что значат эти /666. так вот, на винде проблем с этим небыло, а сейчас, если в адресной строке приходит page, то файл Page.php уже не подключится.

    сейчас сделал следующим образом:
    Код (PHP):
    1. function __autoload($name){
    2.     if        (@include_once 'core/'.$name.'.php'){}
    3.     else        (@include_once 'core/'.ucfirst(strtolower($name)).'.php'){}
    4. }
    5.  
    т.е. использовал конструкцию if не совсем по назначению =) можно это сделать как-то правильней, или "и тааак сойдет" ?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    можно сделать карту соответствий
    или
    можно хранить все файлы в нижнем регистре
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Фреймворки когда берут из урла имя контроллера, преобразуют потом его самостоятельно под свои требования. Т.е. если контроллер page, то фреймворк сам сделает ucfirst, приставит Controller (если это ему надо) и т.п. И даже некоторые самостоятельно преобразуют single-page к SinglePage (не сложно делается, кстати). Так что имеет смысл сделать так же
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    было бы не плохо если бы была возможность делать регистронезависимое подключение или как то так.
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да, ведь проблема, емнип, именно в кейсе имени файла - подключенные классы все равно какого регистра.
     
  6. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    что за кейсе ?
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    case - регистр клавиатуры. размер буковок. кейс сенситивити - чувствительный к регистру (зависимый, CS), кейс инсенситивити - не чувствительный к регистру (независимый, CI).
    читай английские мануалы и ресурсы чтоб не плавать в терминологии )))
     
  8. osvical

    osvical Новичок

    С нами с:
    9 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    действительно, проще же предупредить возможную проблему на корню, а не усложнять автозагрузчик, спасибо) сделаю ucfirst(strtolower($name)) в роутере и все дела