В PHP я могу включить каталог скриптов?
т.е. вместо:
include('classes/Class1.php');
include('classes/Class2.php');
есть что-то вроде:
include('classes/*');
Не могу найти хороший способ включить коллекцию из примерно 10 подклассов для определенного класса.
get_include_path()
прежнему не может автоматически определить порядок загрузки (базовый класс может быть загружен ПОСЛЕ расширенного класса, что приводит к ошибкам)Вот способ, которым я включаю множество классов из нескольких папок в PHP 5. Это будет работать, только если у вас есть классы.
источник
Я понимаю, что это старый пост, НО ... НЕ ВКЛЮЧАЙТЕ ВАШИ КЛАССЫ ... вместо этого используйте __autoload
Тогда всякий раз, когда вы вызываете новый класс, который еще не был включен, php будет автоматически запускать __autoload и включать его для вас.
источник
Если вы используете php 5, вы можете вместо этого использовать автозагрузку .
источник
это всего лишь модификация кода Карстена
источник
Как это сделать в 2017 году:
Рекомендовано PHP документацией здесь: автозагрузка классов
источник
autoload
что вступит в игру только тогда, когда кто-то попытается создать объект класса, который еще не был загружен.Вы можете использовать set_include_path :
http://php.net/manual/en/function.set-include-path.php
источник
classes/
при использованииinclude
/require
Если вы хотите включить все в каталог И его подкаталоги:
Не забывайте, что он будет использовать алфавитный порядок для включения ваших файлов.
источник
The entries are returned in the order in which they are stored by the filesystem.
- php.net/manual/en/function.readdir.phpЕсли вы хотите включить несколько классов, не определяя каждый класс сразу, вы можете использовать:
Таким образом, вы можете просто определить класс в php-файле, содержащем класс, а не весь список
$thisclass = new thisclass();
Что касается того, насколько хорошо он обрабатывает все файлы? Я не уверен, что с этим может быть небольшое снижение скорости.
источник
Если есть между файлами НИКАКИХ зависимостей ... вот рекурсивная функция для включения ВСЕХ файлов php во ВСЕ подкаталоги:
источник
источник
Я предлагаю вам использовать функцию readdir (), а затем выполнить цикл и включить файлы (см. Первый пример на этой странице).
источник
Не пишите функцию () для включения файлов в каталог. Вы можете потерять переменные области видимости и, возможно, придется использовать «глобальный». Просто зациклите файлы.
Кроме того, вы можете столкнуться с трудностями, когда включенный файл имеет имя класса, которое будет распространяться на другой класс, определенный в другом файле - который еще не включен. Так что будьте осторожны.
источник