Intereting Posts
Скрыть Добавить в корзину кнопка на woocommerce Страница описания продукта определенного продукта Функция короткого кода не работает без заголовка Не удается войти с правильным именем пользователя и паролем Подменю в шаблоне пользовательской страницы боковой панели Динамическое создание метабоксов Как правильно запросить admin-ajax.php, когда URL-адрес WordPress и URL-адрес сайта различны? Пользовательская длина выдержек WooCommerce WordPress отключает косую черту при импорте Выполнение запроса вставки запроса несколько раз Получить URL-адрес текущих пользователей? Как отображать цену продукта в цикле Как добавить категории в пользовательские типы сообщений в WordPress? Как изменить метаданные (название, описание) для текущего сообщения? включить любой плагин в другой плагин или использовать другой плагин в другом Стиль виджета архивов / категорий боковых панелей через тему

Проблема пространства имен spl_autoload в администраторе WordPress

Я экспериментирую с пространством имен PHP в плагинах Worpdress. Плагин включает в себя файл загрузчика, который устанавливает функциональность spl_autoload, а затем создает экземпляр другого контроллера в зависимости от того, является ли текущий запрос страницы «is_admin ()» или нет.

[WP_PLUGIN_DIR] /lhes_experiment/loader.php

use lhes\system\controllers as sys; set_include_path('./wp-content/plugins/lhes_experiment/' . PATH_SEPARATOR . get_include_path()); spl_autoload_extensions(".php"); // comma-separated list spl_autoload_register( 'spl_autoload' ); $config = array( ... ); if( is_admin() ){ error_log( var_export( new sys\experiment( ), true ), 0 ); }else{ error_log( var_export( new sys\experiment( ), true ), 0 ); } 

[WP_PLUGIN_DIR] /lhes_experiment/lhes/system/controllers/experiment.php

 namespace lhes\system\controllers; class experiment extends test{ public $property; function __construct( ){ $this->property = 'owls'; } } 

[WP_PLUGIN_DIR] /lhes_experiment/lhes/system/controllers/test.php

 namespace lhes\system\controllers; class test{ public $test; function __construct( ){ $this->test = 'hi'; } } 

Когда запрос не является и администратором, код работает как ожидалось, и журнал ошибок показывает:

 [23-Jan-2013 12:55:27 UTC] lhes\system\controllers\experiment::__set_state(array( 'property' => 'owls', 'test' => 'hi', )) 

Однако, когда запрос относится к странице администратора, тот же самый код не работает:

 [23-Jan-2013 12:56:17 UTC] PHP Fatal error: Class 'lhes\system\controllers\test' not found in C:\Program Files (x86)\Zend\Apache2\htdocs\wp-content\plugins\lhes_experiment\lhes\system\controllers\experiment.php on line 4 

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

Solutions Collecting From Web of "Проблема пространства имен spl_autoload в администраторе WordPress"