Intereting Posts
Обновлено с 2.8.x до 3.3.1 и потеряно wp-pagenavi показывает только первую страницу Ошибка запроса WP? Не могу узнать, почему сообщения не найдены! WP-CLI работает на не установленном WP-CLI экземпляре WordPress? Проверьте, существует ли проблема на странице Как удалить строку «Путь» в редакторе WordPress для конечных пользователей, которые отправляют форму? Контекст Metabox для типа страницы Как я могу загрузить таблицу стилей для дочерних объектов с помощью строки busting cache и удалить ту же таблицу стилей, загруженную родительской темой? Введите, сохраните и отобразите текст из текстовой области или поля Создать короткий код в Child Theme? Pull Custom / wp-admin / css для Non-Admin в Multisite Категории в модуле загрузки Значения заказа, внесенные в пользовательские таксономии Обновление пользовательской мета в пользовательской форме WordPress и перенаправление Уокер или wp_get_nav_menu_items VS jQuery

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