Kohana 3.3 прописные / строчные буквы
Я только что переместил свой проект, созданный на Kohana3.3, из Windows в Ubuntu (локальный сервер), и он перестал работать. Я считаю, что проблема заключается в прописных / строчных буквах (для Table.__ или Model_ они не существуют).
Мне нужно объяснение имен файлов в верхнем и нижнем регистре и классов.
Что я нашел, так это вопрос: Kohana 3.3 Не работает из подкаталога:
Kohana 3.3 добавляет частичную поддержку стандарта PSR-0 PHP Framework Interop Group. Разработчикам фреймворка PHP рекомендуется следовать этому стандарту, чтобы упростить взаимодействие между фреймворками. Одним из требований PSR-0 является то, что имена классов и имена файлов совпадают.
Кроме того, я вижу, что папка Controller в Kohana3.3 начинается с заглавной буквы C (не как в 3.2). Кроме того, файл Welcome.php начинается с W (не как в 3.2).
Итак, мои простые вопросы по Kohana3.3:
Должна ли папка Model начинаться с заглавной буквы?
Должны ли все файлы контроллера начинаться с заглавной буквы?
Должны ли все файлы модели в папке Model начинаться с заглавной буквы?
Должен ли я написать ORM::factory('Capital'), но не ORM:: factory ('Capital')?
А как насчет папки просмотра: это просмотр или просмотр?
Я прочитал несколько примеров для Kohana, но из того, что я нашел, я сомневаюсь, что это для 3.3.
Кроме того, мой вопрос: почему он работал под Windows?
1 ответ
Вы можете понять большую часть этого, просто читая документацию и / или просто экспериментируя и видя, что работает, а что нет.
Короче говоря, в PSR-0 имена файлов должны совпадать с именами классов. Итак, если вы вызываете класс с именем Penguins_CanNot_Fly
тогда имя файла должно быть точно Penguins/CanNot/Fly.php
,
В Linux имена файлов чувствительны к регистру. Так, File.txt
а также file.txt
два разных файла. В Windows, однако, два файла считаются одним и тем же файлом (это потому, что в Windows регистр не учитывается). Это означает, что PSR-0 не работает должным образом в Windows, если вы не измените автозагрузчик для проверки точного пути к файлу.
Что касается ORM, да, вы должны иметь в виду, что модели должны быть чувствительными к регистру. ORM::factory('Blog')
а также ORM::factory('blog')
загрузит разные модели, но будет использоваться одна и та же таблица.