Articles of Автозагрузка

Оптимальные методы работы с автозагрузкой

При работе над проектом PHP, использующим парадигму ООП с __autoload() PHP, из следующего считаются наилучшей практикой для управления автономными функциями: ( Приведенные примеры упрощены ради краткости ) tl; dr : Как обычно загружается автономная загрузка функции: псевдоавтозагрузкой (например, с помощью магии __callStatic ) [ Вариант 1 ] абстрактный класс вспомогательных классов сгруппированных статических методов [ […]

Функция set_error_handler, не вызывающая автозагрузку

У меня установлена set_error_handler() для вызова функции при возникновении ошибки. В этой функции у меня есть собственная реализация класса исключения: function acs_error_handler($errno, $errstr, $errfile, $errline) { throw new acs_exception($errstr, $errno); } Это дает мне следующую ошибку: Неустранимая ошибка: Class 'acs_exception' не найден По какой-то причине эта функция не вызывает мою функцию автозагрузки, которую я установил, […]

Конфликт между функциями Codeigniter AUtoload и Flourish Autoload

Я разрабатываю веб-приложение, используя инфраструктуру Codeigniter ( http://codeigniter.com/ ) плюс библиотеку Flourish (без рамки ) ( http://flourishlib.com/ ). Я просто сбросил папку процветания в свое приложение, а затем создал оптимизированные файлы инициализации и конфигурации в соответствии с инструкциями (они создают автозагрузку Flourish). Это моя структура папок: — auxcode \ ——– init.php ——– config.php ——–процветать\ — […]

Как загрузить классы из нескольких каталогов с помощью __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] но это только загружает классы из одного каталога, а что касается других каталогов? Потому что я группирую классы в разных каталогах. Поэтому […]

Как управлять автозагрузкой зависимостей

При создании библиотеки я всегда предоставляю класс Autoloader который обрабатывает автозагрузку для библиотеки. Автозагрузчик зарегистрирован следующим образом: require_once 'path/to/PHP-Parser/lib/PHPParser/Autoloader.php'; PHPParser_Autoloader::register(); Я не уверен, как справиться с этим, если моя библиотека зависит от другой библиотеки. Представьте, что PHPParser зависит от PHPLexer . Теперь при использовании библиотеки нужно будет написать: require_once 'path/to/PHP-Lexer/lib/PHPLexer/Autoloader.php'; PHPLexer_Autoloader::register(); require_once 'path/to/PHP-Parser/lib/PHPParser/Autoloader.php'; PHPParser_Autoloader::register(); Если […]

Проверьте, существует ли экземпляр класса, если не создать экземпляр

Мне было интересно, можно ли создать функцию и передать ей имя класса. Затем функция проверяет, существует ли экземпляр класса в данный момент, если он не создает экземпляр класса. Кроме того, если возможно, сделайте эту переменную глобальной и потребуйте ее возврата. Я понимаю, что возвращение может быть единственным вариантом. function ($class_name) { // Check if Exists […]

Как я могу автоматически загрузить пользовательский класс в Laravel 5.1?

Я создал папку library папке app чтобы добавить свои собственные классы. Это содержимое файла app/library/helper.php : <?php namespace Library; class MyHelper { public function v($arr) { var_dump($arr); } } Я добавил пространство имен в composer.json : и тогда я побежал $ composer dump-autoload но он, похоже, не имеет никаких эффектов. Файлы vendor/composer/autoload_psr4.php vendor/composer/autoload_classmap.php не изменился. […]

Полный пример автозагрузки композитора?

Я пытаюсь собрать все грани, которые я нашел об автозагрузке класса в композиторе, но я не могу заставить его работать. В каждом примере, который я вижу, отсутствует какая-то часть. В основном это сводится к двум файлам с 4 строками: index.php $loader = require 'vendor/autoload.php'; $loader->add('Vendor\\', __DIR__.'/../app/'); new Vendor_Package_Obj(); Приложение / Vendor / Упаковка / Obj.php […]

Как автозагрузка расширенных классов?

Я планирую использовать функцию автозагрузки PHP для динамической загрузки только файлов классов, которые необходимы. Теперь это может создать огромный беспорядок, если каждая отдельная функция имеет отдельный файл. Поэтому я надеюсь и спрашиваю, есть ли способ, чтобы связанные классы остались в 1 файле класса и все еще были загружены автоматически function __autoload($class_name){ include('classes/' . $class_name . […]

Файл автозагрузки композитора не работает

Моя спецификация Autoload выглядит следующим образом "autoload" : { "psr-4" : { "MyMVC\\" : "app/" }, "classmap": [ "app/Controllers", "app/Helpers" ], "files": ["app/routes.php"] }, Содержимое файла routes.php: <?php use MyMVC\Core\Route; $route = new Route; $route->add('/', 'HomeController@index'); $route->add('about', 'AboutController@index'); $route->add('contact', 'ContactController@index'); теперь в моем app/init.php я пытаюсь использовать объект $route но он дает мне ошибку Notice: […]