Есть ли у этой структуры каталогов для организации классов, таких как Zend Framework, имя?
Хорошо, в очень простых, небольших проектах, вероятно, классы определены в файлах с соответствующими именами. Так, например, эта функция автозагрузки будет работать:
function __autoload($class_name) {
require_once $class_name . '.php';
}
Но когда проект становится больше, это может стать настоящим беспорядком, а имена могут ввести в заблуждение и сбить с толку. Для решения этой проблемы я видел много подходов.
Некоторые компании используют префиксы для всех своих классов... например, "class.MyClass.php", чтобы убрать беспорядок на одном уровне.
Некоторые организуют их в каталогах. Но все они должны быть добавлены для включения пути с замедлением работы приложения или должны быть изменены перед использованием. Код может стать сложным и странным.
PHP представил пространства имен начиная с версии 5.3, хотя я пока не совсем уверен в их функциональности.
Однако стандартом, который я видел все чаще и чаще, который, как мне кажется, стал популярным благодаря Zend Framework, является следующий:
function __autoload($className){
require_once str_replace('_','/',$className).'.php';
}
Этот тривиальный автозагрузчик уже выражает концепцию.
Именам классов предшествует их путь с подчеркиванием в качестве разделителя.
Например, компонент "Сервис" содержит API для различных поставщиков услуг.
Zend/Service/Amazon.php
держит класс Zend_Service_Amazon
,
Более специализированный API для Amaozn s3 можно найти в Zend/Service/Amazon/S3.php
где класс Zend_Service_Amazon_S3
жизни.
Я думаю, что эта концепция очень проста в обслуживании, очень интуитивна, достаточно распространена и адаптируется к большинству потребностей.
Но как это называется. У него есть имя?
2 ответа
Наконец-то нашел правильный ответ. Он называется PSR-0 и является руководством по соблюдению для автозагрузки:
http://groups.google.com/group/php-standards/web/psr-0-final-proposal
Предложения. У него нет имени, но Zend Framework использует его первым или более, чем другие, его можно назвать структурой Zend Style, например Zend Coding Style.