Имена файлов классов Zend Framework в Windows и Linux

Предыстория: мы часто работаем над веб-приложениями, разработанными на PHP (Zend Framework) и размещенными на сервере Linux. Команда программистов может состоять из людей, которые могут использовать Linux или Windows для своей локальной платформы разработки.

Поскольку имена моделей Zend отображаются в именах файлов, регистр имеет значение. Программист может написать $ this-> something, где «something» - это модель, имя файла которой на сервере linux «Something.php».

Его код будет нормально работать на его ПК для разработки под Windows, потому что «кое-что» будет правильно отображаться на «Something.php» в Windows. Но при загрузке на сервер Linux код сломается, потому что имя файла чувствительно к регистру в Linux. Он должен был написать код как «$ this-> Something».

Итак, наконец, мой вопрос: существует ли конфигурация Zend Framework, которая будет генерировать ошибку даже в Windows, если система обнаружит, что регистр имени модели в коде не совпадает с регистром фактического имени файла в файловой системе?


person royappa    schedule 04.04.2011    source источник
comment
С пометкой. Zend! = Zend Framework.   -  person Layke    schedule 05.04.2011
comment
Суть в том, что нет, придерживайтесь соглашений об именах!   -  person markus    schedule 05.04.2011
comment
@markus - мы используем соглашения об именах. Проблема возникает, когда программист делает опечатку (вводит строчные буквы вместо прописных), и она продолжает работать в Windows, а затем дает сбой в Linux. Было бы неплохо это обнаружить.   -  person royappa    schedule 05.04.2011
comment
@royappa: правда, наша команда работает с windows и у нас с этим нет проблем. Если вы используете IDE с поддержкой Zend Framework, у вас практически нет шансов сделать опечатку ... Надеюсь, у вас есть промежуточная среда, такая же, как live. если вы можете обнаружить там редкие случаи, этого недостаточно?   -  person markus    schedule 06.04.2011
comment
@markus: это случается редко (как и любая другая опечатка). Да, у нас есть промежуточная среда, в которой это было подобрано, и все сначала тестируется перед запуском вживую. Я просто надеялся на простой флаг или опцию, чтобы полностью избежать проблемы, как есть много флагов для различных типов проверки ошибок. Тем не менее, спасибо за хорошие предложения.   -  person royappa    schedule 06.04.2011


Ответы (3)


Итак, наконец, мой вопрос: существует ли конфигурация Zend Framework, которая будет генерировать ошибку даже в Windows, если система обнаружит, что регистр имени модели в коде не совпадает с регистром фактического имени файла в файловой системе?

Не то, чтобы я знал об этом, но было бы довольно легко добавить несколько проверок в копию ZF на сервере / рабочей станции разработки. ZF использует spl_autoload_register для загрузки классов, и вся логика для преобразования имен классов в расположение файловой системы находится в пространстве имен Loader.

HTH.

person Robin    schedule 04.04.2011
comment
Спасибо! Я надеялся, что сама структура может иметь настройку для этого, но если нет, это хорошее предложение относительно того, где это можно реализовать. - person royappa; 05.04.2011

Соглашения об именах ZF

В соглашении о кодировании Zend Framework указано, что вы должны использовать имена в верхнем регистре. Некоторые соглашения так же важно соблюдать, как и сам API.

http://framework.zend.com/manual/en/coding-standard.naming-conventions.html

Если имя класса состоит из более чем одного слова, первая буква каждого нового слова должна быть заглавной. Последовательные заглавные буквы не допускаются, например класс «Zend_PDF» не допускается, в то время как «Zend_Pdf» допустим.

и

Имена классов могут содержать только буквенно-цифровые символы. В названиях классов можно использовать числа, но в большинстве случаев это не рекомендуется. Подчеркивание разрешено только вместо разделителя пути; имя файла «Zend / Db / Table.php» должно соответствовать имени класса «Zend_Db_Table».

В качестве примечания, ваш пример был неправильным. Но в любом случае сохраняйте имена ваших моделей в верхнем регистре, а путь к моделям также должен быть прописным в соответствии с соглашением об именах ZF.

person Layke    schedule 04.04.2011
comment
Мы понимаем соглашения и следуем им при определении классов и создании файлов. Вопрос (если неясно) заключался в том, как обнаруживать ошибки в Windows, когда класс ВЫКЛЮЧЕН с опечаткой (нижний регистр вместо верхнего регистра). - person royappa; 05.04.2011

Возможно, вам поможет что-то вроде PHP_CodeSniffer.

Никогда не пробовал, но насколько я понимаю, вы можете определить правила для проверки вашего кода, тем самым определяя правила на основе регистра имени файла для вашей проблемы.

Существует уже определенный Zend набор правил из того, что я прочитал, возможно, он уже содержит такие правила (или, может быть, также PEAR набор правил).

person ant1j    schedule 05.04.2011