Комментарии

Вывод страницы в браузере
( 0 Голосов )
После того, как мы сделали компоновку страницу в предыдущей статье нашего сайта, нам осталось лишь отправить страницу браузеру. Соответствующий код приведен в самом конце файла index.php, как показано в листинге ниже.
 
Исходный код в конце файла index.php
// Пометить состояние после воспроизведения в профилировщике
JDEBUG ? $_PROFILER->mark('afterDispatch') : null;
 
// Возвратить ответ
$app->render();
Как и прежде, в операторе JDEBUG лишь помечается момент наступления события afterRender для профилирования приложения. Другое дело — последняя строка кода echo $арр;. Напомним, что в переменой $арр хранится объект типа JSite. А команда echo языка РНР служит для отправки текстового сообщения браузеру. Что же тогда означает передача объекта по команде echo?
 
Ответить на этот вопрос нетрудно. Если у объекта имеется специальный метод toString (), он вызывается автоматически при выполнении команды echo с объектом. В противном случае команда echo лишь возвращает имя класса данного объекта.
 
Проанализировав состав класса JSite из файла includes/application.php, мы не обнаружим в нем метод toString (). Но если сделать то же самое в отношении его родительского класса JApplication из файла libraries/joomla/application/application.php, то окажется, что в нем имеется метод toString (), наследуемый классом JSite. Исходный код этого метода приведен в листинге ниже.
 
Метод toString () из класса JApplication
public function  toString()
{
$compress = $this->getCfg('gzip', false); return JResponse::toString($compress);
}
Этот метод, в свою очередь, вызывает метод toString () из класса JResponse. Исходный код метода toString () приведен в листинге ниже.
 
Метод toString () из класса JResponse
public static function toString($compress = false)
{
$data = self::getBody();
 
// не сжимать страницу, если сервер все равно собирается это сделать, иначе это напрасная трата времени
if ($compress && !ini_get('zlib.output_compression')
^>&& ini_get('output_handler')!='ob_gzhandler') {
$data = self::compress($data);
}
if (self::allowCache() === false) {
self::setHeader('Cache- Control', 'no-cache', false);
// Протокол HTTP 1.0 self::setHeader('Pragma', 'no-cache');
}
self::sendHeaders();
return $data;
}
Данный метод выполняет следующие действия.
 
  1. Размещает видимую часть (так называемое тело) страницы в переменной $data.
  2. Проверяет, следует ли сжать страницу или нет.
  3. Проверяет наличие кеширования и соответственно устанавливает заголовок страницы.
  4. Отправляет заголовки страницы.
  5. Возвращает переменную $data, содержащую всю страницу.
Содержимое переменной $data затем возвращается команде echo языка РНР, которая отправляет его браузеру.
 

Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости