Хорошо, в очень простых небольших проектах, вероятно, классы определены в файлах с соответствующими именами.Например, чтобы эта функция автозагрузки работала:
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';
}
Этот тривиальный автозагрузчик уже выражает концепцию.
Именам классов предшествует их путь с подчеркиванием какразделитель.
Например, компонент «Сервис» содержит apis для различных поставщиков услуг.
Zend/Service/Amazon.php
содержит класс Zend_Service_Amazon
.
Более специализированный API дляAmaozn s3 можно найти в Zend/Service/Amazon/S3.php
, где живет класс Zend_Service_Amazon_S3
.
Я думаю, что эта концепция очень проста в обслуживании, интуитивно понятна, в настоящее время достаточно распространена и адаптируется к большинству потребностей.
Но как это называется?У него есть имя?