Intereting Posts
Целевая архитектура WordPress Woocommerce Перехват приложения load_textdomain $ domain variable Как изменить отображаемый URL? Как я могу фильтровать сообщения post_parent в admin? Попытка получить пользовательские изображения вложений типа post для работы в индексированном массиве Как использовать tinyMCE для пользовательской «биографической информации» без использования каких-либо файлов ядра? Страница отображения содержится в файле index.php Можно ли использовать WP-CLI через PHP-framework? Как сделать папку wordpress (/ wordpress) перенаправлена ​​на /? Передача параметров URL на страницы WordPress и довольно URL Разметка страниц между изображениями (активная / неактивная) Разделите тег запятой Редакции сообщений не сохраняются или отображаются только для пользовательских типов сообщений Пользовательская таксономия, применяемая к ссылкам Изменить column_author в WP_Comments_List_Table

Проблема пространства имен 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"