Intereting Posts
Подключение к серверу PHP с помощью Swift Лучший способ полностью уничтожить сеанс – даже если браузер не закрыт Настройка расширения PHP SOAP в Windows Использование регулярного выражения для соответствия блоку div, имеющему определенный идентификатор Инъекция зависимостей Laravel: когда вам нужно? Когда вы можете издеваться над фасадами? Преимущества любого метода? Как посмотреть файл в PHP? Отображение / скрытие следующего div при наведении указателя на предыдущий div Java: функция для массивов, таких как объединение PHP ()? Файл не считывается с помощью file_get_html Папка назначения загрузки не может быть доступна для записи. (Codeigniter) получать данные из бэкэнда в три столбца в одной строке функции автозагрузки в php Комбинация Nginx PHP5 дает 403 ошибки Отключить обработчик ошибок laravel Имена переменных PHP / function / class с использованием специальных символов

Joomla 1.6 Внешняя проблема взаимодействия с PHP

Я новичок в работе с Joomla, и я адаптирую внешний php-класс, который я написал для v1.5. Не вдаваясь во все детали, в основном, я использую функцию для загрузки среды Joomla, после которой все в Joomla доступно для класса. Это делается, главным образом, с помощью файла index.php.

Он отлично работает с v1.5 и на некоторое время, но пытается адаптировать его для версии 1.6, он падает.

Вот функция:

private function loadJoomla() { $path_base = rtrim($this->joomFullPath, '/'); // Set flag that this is a parent file define( '_JEXEC', 1 ); define( 'DS', DIRECTORY_SEPARATOR ); switch ($joomlaVersion) { case 'v1.6': if (file_exists($path_base . '/defines.php')) { include_once $path_base . '/defines.php'; } if (!defined('_JDEFINES')) { define('JPATH_BASE', $path_base); require_once JPATH_BASE.'/includes/defines.php'; } require_once JPATH_BASE.'/includes/framework.php'; // Mark afterLoad in the profiler. JDEBUG ? $_PROFILER->mark('afterLoad') : null; // Instantiate the application. $app = JFactory::getApplication('site'); // Initialise the application. $app->initialise(); // Mark afterIntialise in the profiler. JDEBUG ? $_PROFILER->mark('afterInitialise') : null; // Route the application. $app->route(); // Mark afterRoute in the profiler. JDEBUG ? $_PROFILER->mark('afterRoute') : null; // Dispatch the application. $app->dispatch(); // Mark afterDispatch in the profiler. JDEBUG ? $_PROFILER->mark('afterDispatch') : null; // Render the application. $app->render(); // Mark afterRender in the profiler. JDEBUG ? $_PROFILER->mark('afterRender') : null; // Return the response. return $app; break; case 'v1.5': // PREPARE define('JPATH_BASE', $path_base); require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' ); JDEBUG ? $_PROFILER->mark( 'afterLoad' ) : NULL; // CREATE THE APPLICATION $GLOBALS['mainframe'] =& JFactory::getApplication('site'); // INITIALISE THE APPLICATION /* set the language */ $GLOBALS['mainframe']->initialise(); JPluginHelper::importPlugin('system'); /* trigger the onAfterInitialise events */ JDEBUG ? $_PROFILER->mark('afterInitialise') : NULL; $GLOBALS['mainframe']->triggerEvent('onAfterInitialise'); // ROUTE THE APPLICATION $GLOBALS['mainframe']->route(); /* authorization */ $GLOBALS['Itemid'] = JRequest::getInt( 'Itemid'); $GLOBALS['mainframe']->authorize($GLOBALS['Itemid']); /* trigger the onAfterRoute events */ JDEBUG ? $_PROFILER->mark('afterRoute') : NULL; $GLOBALS['mainframe']->triggerEvent('onAfterRoute'); // DISPATCH THE APPLICATION $GLOBALS['option'] = JRequest::getCmd('option'); $GLOBALS['mainframe']->dispatch($GLOBALS['option']); /* trigger the onAfterDispatch events */ JDEBUG ? $_PROFILER->mark('afterDispatch') : NULL; $GLOBALS['mainframe']->triggerEvent('onAfterDispatch'); // RENDER THE APPLICATION $GLOBALS['mainframe']->render(); /* trigger the onAfterRender events */ JDEBUG ? $_PROFILER->mark('afterRender') : NULL; $GLOBALS['mainframe']->triggerEvent('onAfterRender'); // RETURN THE RESPONSE return JResponse::toString($GLOBALS['mainframe']->getCfg('gzip')); break; default: return NULL; break; } 

Как сказано, бит версии 1.5 отлично работает и является только файлом index.php с переменной mainframe, сделанной глобально. Бит v1.6 падает на '$ app-> dispatch ();'.

Отладка потока с помощью «die» заставила меня работать с диспетчером в /libraries/joomla/application.php, где я обнаружил, что точкой падения над «$ content = JComponentHelper :: renderComponent ($ component)»; который заставил меня функционировать renderComponent в /libraries/joomla/application/component/helper.php

    Несколько «умирает» позже, я обнаружил, что падение должно быть, дождитесь его, «ob_start ();». Полностью сбитый с толку, особенно после проверки кода v1.5, я вижу, что он точно такой же, как и v1.6 здесь.

    Я подозреваю, что область $ app может быть причиной этого и по достоинству оценят некоторую помощь. Я пробовал очевидное «$ GLOBALS ['приложение»] без радости.

    Спасибо, что нашли время и указатели.

    Related of "Joomla 1.6 Внешняя проблема взаимодействия с PHP"