@ StasM это правильно. Но вот немного больше объяснений.
include_path
сообщает PHP, где искать, когда он выполняет include
, include_once
, require
или require_once
. Конечно, эти include
s и require
s всегда ссылаются на определенный файл .
Автозагрузка предназначена для пропущенных классов . Если в коде есть ссылка на еще не выгруженный класс - как правило, хотя и не исключительно, путем вызова оператора new
, как в вашем примере - тогда автозагрузка - это процесс, который может задействовать алгоритм загрузки класса. Этот процесс обычно включает в себя начало с имени отсутствующего класса и создание набора возможных путей - либо абсолютных в файловой системе, либо относительно записей в include_path
- из имени отсутствующего класса, а затем выполнение include
в надежде, что определение класса находится в одном из них.
В вашем случае вы вызвали класс с именем "Test". Файл, содержащий этот класс, находится в файле APPLICATION_PATH . 'tests/Test.php'
. И вы поместили каталог APPLICATION_PATH . 'tests'
в include_path
. Но пока не будет установлен алгоритм автозагрузки, система не сможет подключить имя класса 'Test'
к имени файла 'Test.php'
.
Соглашение об именах классов в стиле PEAR обеспечит это соединение. А автозагрузчик, использующий это соглашение - как автозагрузчик Zend Framework по умолчанию - сможет выполнить это сопоставление от имени класса к имени файла, а затем include
требуемый файл.
В качестве последнего усложнения традиционное соглашение о разметке каталогов Zend Framework помещает определенные классы в папки, которые НЕ , в путь включения: модели, формы, службы, контроллеры, помощники представлений, помощники действий и т. Д. Вот почему вы часто будете видеть больше конфигурации автозагрузчика - обычно в классе Bootstrap
- определяющего отображение между определенными именами классов и определенными местами в файловой системе, которые отключены include_path
.
Например, класс с именем Default_Model_User, на первый взгляд, может находиться в include_path
в файле 'Default/Model/User.php'
. Но стандартная структура каталогов приложения хочет поместить этот файл в «application / models / User.php». Обратите внимание на множественное число 'models' и строчную букву 'm' в имени пути, а также наличие «Default» в имени класса. Дополнительная конфигурация в автозагрузчике необходима для того, чтобы иметь смысл, обеспечить шаблон для сопоставления имени файла с именем файла. Обычно это достигается с помощью автозагрузчика ресурсов .
Надеюсь, что это поможет вам или кому-то еще. Ура!