Intereting Posts
Запрос jQuery AJAX завершается ошибкой 503 только с параметром «http://example.com» в качестве значения Рекомендации по доступу к зарегистрированному объекту пользователя из других классов Как определить язык текста? Невозможно реализовать два интерфейса, которые имеют одно и то же имя метода Как мне диагностировать эту ошибку сегментации PHP? WooCommerce Бесплатная доставка – удалите исходное или измените текстовое имя при оформлении заказа и электронной почте C #: эквивалент php sprintf Функции AJAX и функции класса PHP Команды не синхронизируются при вызове хранимой процедуры Mysql «Срок действия страницы истек из-за бездействия» – Laravel 5.5 Это плохая модель? (Переключатель внутри / для петли foreach) Как сделать cURL php с помощью AJAX, чтобы сделать живой запрос? Как узнать, что такое пространство имен, URL-адрес, действие мыла и имя метода? Переменная Javascript внутри переменной php лучший алгоритм хранения паролей в 2016 году

Как загрузить классы из нескольких каталогов с помощью __autoload?

Следуя этому вопросу , кажется, что дублирующаяся проблема может быть решена путем использования кода __autoload ниже,

 function __autoload($class_name) { include AP_SITE."classes_1/class_".$class_name.".php"; } $connection = new database_pdo(DSN,DB_USER,DB_PASS); var_dump($connection); 

результат,

 object(database_pdo)[1] protected 'connection' => object(PDO)[2] 

но это только загружает классы из одного каталога, а что касается других каталогов? Потому что я группирую классы в разных каталогах. Поэтому я получу ошибку, если захочу загрузить классы из других каталогов,

 function __autoload($class_name) { include AP_SITE."classes_1/class_".$class_name.".php"; include AP_SITE."classes_2/class_".$class_name.".php"; } 

сообщение,

Предупреждение: include (C: /wamp/www/art_on_your_doorstep_2011_MVC/global/applications/CART/classes_2/class_database_pdo.php) [function.include]: не удалось открыть поток: нет такого файла или каталога в …

который ссылается на эту строку – include AP_SITE."classes_2/class_".$class_name.".php";

Итак, мой вопрос: как я могу загружать классы из нескольких каталогов с помощью __autoload ?

возможное решение:

 function autoload_class_multiple_directory($class_name) { # List all the class directories in the array. $array_paths = array( 'classes_1/', 'classes_2/' ); # Count the total item in the array. $total_paths = count($array_paths); # Set the class file name. $file_name = 'class_'.strtolower($class_name).'.php'; # Loop the array. for ($i = 0; $i < $total_paths; $i++) { if(file_exists(AP_SITE.$array_paths[$i].$file_name)) { include_once AP_SITE.$array_paths[$i].$file_name; } } } spl_autoload_register('autoload_class_multiple_directory');