Как подключить футер автоматически?

661
.
Как подключить футер автоматически? или Объектное дополнение сценария.
Добрый день всем! Скажу сразу - я не мегокодырь, и не претендую на право таким быть, потому не судите строго, в этой статье выложу описание одной интересной особенности ООП PHP. Речь пойдет о автоматическом подключении футера.
Возможно ли это не нарушая логической последовательности PHP?
PHP.su о PHP 5:
PHP 5 предоставляет концепцию деструкторов, сходную с теми, что применяются в других ОО языках, таких, как Java: когда освобождается последняя ссылка на объект, перед высвобождением памяти, занимаемой этим объектом, вызывается метод __destruct(), не принимающий параметров.

Именно метод __destruct() позволит нам подключать автоматически фуутер по окончании работы скрипта.
Но нужно понимать такие нюансы как например то, что футер, желательно, должен состоять из HTML/native кода, и придется глобализировать переменные, т. к. скрипт будет выполнятся внутри метода класса(функции), чего не скажешь о моем шаблонизаторе, где можно использовать специальный расширенный натив.
А теперь конкретно к примерам:
Document.Class.php
//Создадим класс документа
class Document {
  //Что будем подключать
  var $file;
  //Это нам нужно для правильной конструкции
  function __construct($file) {
    $this->file = $file;
  }
  //А это для правильной работы
  function __destruct() {
    require $this->file;
  }
}


Готовый рабочий класс у нас есть. Теперь дело к сценарию:
index.php
require 'Document.Class.php';

//Регистрируем объект и аргументом ставим
//файл который будет подключен
$DOC = new Document("footer.php");

//Ну и тестовая переменная
//используем ее позже в футере
//Сдесь также может быть любой сценарий
$test_var = "Тестовая переменная";

//Если здесь ничего нету, то по логике PHP здесь выполняется метод __destruct()
//заданный нами ранее в классе.
//Представить себе что PHP сдесь выполнит можно так:
#$Document->__destruct();
//Только он (пых), допишет это сам.


Файл футера:
foter.php
global $test_var;

?>
html code
Ну вот и футер, где можно использовать натив - <?=$test_var?>
<?php //code php


В результате, объявив такой класс в любом месте скрипта, он автоматически подключит футер вконце!
.
а еще можно использовать register_shutdown_function();
.
NURD (17.07.2012/12:17)
Как подключить футер автоматически? или Объектное дополнение сценария.
Добрый день всем! Скажу сразу - я не мегокодырь, и не претендую на право таким быть, потому не судите строго, в этой статье выл
Ага, а потом все переменные, которые в футере есть прописывать в блоке global. Не, не резон.
.
(\/)____o_O____(\/)
надо будет попробовать в свои шаблонизатор примутить подобное, правда он хитрее и нативнее $mysqli->fetch_object()
.
Onatolich (17.07.2012/12:38)
Ага, а потом все переменные, которые в футере есть прописывать в блоке global. Не, не резон.
Можно легко написать парсер, который за тебя заглобалит все переменные которые ты использовал в шаблоне.
.
Screamer (17.07.2012/12:36)
а еще можно использовать register_shutdown_function();
Можно, но я не пробовал. И это ОО дополнение сценария =)
.
╭∩╮ (`-`) ╭∩╮
Подключение футера с помощью деструктора - это не есть хорошая идея.
---
Деструктор срабатывает не при окончании работы скрипта, а тогда, когда закрывается последняя ссылка данного класса.
---
Если ты успел скачать JohnCMS 5 альфа - глянь как там сделано.
Там все подключается автоматом, причем чтоб применить шаблон для скрипта, достаточно в начале него проинклюдить всего один файл core.php а дальше он сам разберется когда и что подключать.
.
AlkatraZ (17.07.2012/12:55)
Подключение футера с помощью деструктора - это не есть хорошая идея.
---
Деструктор срабатывает не при окончании работы скрипта, а тогда, когда закрывается последняя ссылка данного класса.
---
Есл
Какнибуть загляну.
---
Этот пример не направлен на практическое применение, хотя и вполне можно, это как расширение знаний о ООП 5-й ветки пыха.
.

А нет, чтобы сделать главный шаблон с хеадом и футом и в нем же инклудить шаблон с контентом?
.
NURD (17.07.2012/12:57)
Какнибуть загляну.
---
Этот пример не направлен на практическое применение, хотя и вполне можно, это как расширение знаний о ООП 5-й ветки пыха.
Дык нейроны пиши.
Всего: 23