Цитата Autoloading Classes:PHP: Есть AutoLoader возможность загружать несколько класса в одном файле PHP
Многие разработчики, пишущие объектно-ориентированные приложения создать один PHP исходный файл для каждого определения класса. Одним из самых больших досаждений является , которому приходится писать длинный список необходимых включений в начале каждого сценария (по одному для каждого класса).
В PHP 5 это больше не требуется. Функция spl_autoload_register() регистрирует любое количество автозагрузчиков, позволяя для классов и интерфейсов автоматически загружаться, если они в настоящее время не определены . Регистрируя автозагрузчики, PHP получает последний шанс, чтобы загрузил класс или интерфейс, прежде чем он завершится с ошибкой.
Возникает вопрос: что, если в одном файле php есть несколько классов, подходит ли оно для использования с автозагрузкой? или мне нужно использовать заявление require filepath
?
К примеру, у меня есть файл протокола под Protobuf \ Client.php:
<?php
namespace Protobuf;
class A {
...
}
class B {
...
}
Для автоматической загрузки этих классов из файла с именем 'Client.php' вам понадобится сложная функция. Идея состоит в том, чтобы перевести ваше пространство имен \ classname в 'каталог \ filename.php' – Rasclatt
. В этом случае вам нужно будет указать ваш файл' A.php', тогда, когда вы вызовете 'new Protobuf \ A()', он найдет его , В противном случае вам придется создать слишком сложный автозагрузчик. – Rasclatt
Наконец, если вы создадите его, чтобы автозагрузчик обнаружил класс 'A', тогда вы можете иметь' B' в том же файле, но только если вы уже загрузили 'A', в противном случае вам нужно сделать некоторые алгоритмы, чтобы знать, что 'A' и' B' находятся на одной странице. – Rasclatt