За последние 24 часа нас посетили 17576 программистов и 1716 роботов. Сейчас ищут 1776 программистов ...

Буферизация вывода и быстрые шаблоны

Тема в разделе "PHP для новичков", создана пользователем 440Hz, 11 авг 2006.

  1. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    еще чего :lol: может мне его скачать, потестить и вынести свой вердикт?
    В остальном согласен. хотя знаешь ли мне проще шаблоны как файлы хранить - редактировать и искать удобнее... про быстродействие как-то еще не задумывался... Стоит ли переносить именно гипертекст (ну может еще и CSS) в базу? Какой выигрышь это дает?
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Ganzal
    Смотря как этот CSS файл используется в системе - если он вставляется прямо в текст страницы - тогда да, стоит, а если на него в тексте страницы просто стоит <link rel=...> ссылка, и браузер запрашивает его как обычный файл - тогда конечно нет. :)

    Твой CSS, как и остальные шаблоны, становится динамическим - это позволяет пользоваться такими приемами:

    Код (Text):
    1. td { font-size:[currentFontSize]px; }
    2. .header { background-image:url([imagesPath]/header.gif); }
     
  3. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    файловые операции всяко быстрее чем mysql.
     
  4. Aleksforum

    Aleksforum Активный пользователь

    С нами с:
    4 май 2007
    Сообщения:
    8
    Симпатии:
    0
    Тут я разместил код движка и код модуля:
    http://www.php.ru/forum/viewtopic.php?t=4821&start=60

    Шаблоны у меня простейшие по типу:
    код штмл
    <!- news -->
    код штмл
    <!- menu -->

    По поводу вашего удивления о том что я его храню в базе.
    Я тоже так же удивляюсь когда вижу, что кто то хранит данные в файлах и не могу понять зачем так делают?

    Для меня база - это всё связанное с данными из которых собираются страницы и только код сборки страниц у меня лежит не в базе.

    Картинки частично лежат в папке имг, другие в базе.
    В базе обычно я храню все картинки связанные с объектами каталогов или интернет магазинов, которые загружаются пользователем СУС.

    Картинки же дизайна сайта и\или шаблона хранятся в файлах.

    Но мы ушли очень далеко от темы. Думаю тут просто разные подходы размещения данных.

    Меня очень сильно волнует как можно сделать СУС на объектах и хранить эти объекты в базе (думаю что хранить в файле это будет почти так же).

    К примеру у нас есть объект страница главная сайта.
    На главной странице размещены объекты новости, меню и текст вступительный сайта.

    Есть страница Контакты, где размещено меню и текст контактов.

    В моём движке я функцией загружаю из базы шаблон страницы в которой есть вставки-якоря новостей и меню с текстом.
    Далее запускаю все модули которые отвечают за функции меню, текста и новостей и они отдают в переменную код сгенерированный из которого я по шаблону собираю страницу и выдаю в браузер.

    Но всё это псевдо ООП и мне бы хотелось увидеть совет или пример как можно сделать на объектах мои модули и генератор хотя бы абстрактно без реализации.
     
  5. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    шаблоны - это и есть "код сборки". и не надо путать шаблоны вывода данных с самими данными. субд разрабатывались не для того, чтобы хранить данные (с этим просто замечательно справляется файловая система), а для того, чтобы делать разнообразные выборки данных используя специальные алгоритмы. шаблоны и картинки не надо "выбирать" - их нужно только хранить, читать и очень редко записывать - это работа для ФС.
     
  6. Aleksforum

    Aleksforum Активный пользователь

    С нами с:
    4 май 2007
    Сообщения:
    8
    Симпатии:
    0
    dark-demon
    Не хотелось бы на тупой флуд отвечать тупым флудом, скажу только то что поводу картинок я с вами более чем согласен, но переделывать код вывода, загрузки и обработки картинок мне некогда и не горит.
    И замечу, что тут я вроде невидел рангов за кол-во набитых постов и смысла флудить невижу.
     
  7. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    разрабатывать код надо было изначально с расчётом на то, что данные могут храниться не только в одной единственной БД, а также и в другой, в файлах, в памяти, на клиентской машине.
     
  8. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    Aleksforum
    вы хотите сказать, что все эти действия производятся каждый раз при загрузке каждой страницы вашего сайта? ничего не понимаю. вероятно, упустил что-то. давайте так. вот я решил использовать ваш движок для создания и поддержки своего сайта. у меня на сайте страница с новостями. новости мы обновили неделю назад. с тех пор эта страница была загружена пол-лимона раз. вы же не хотите сказать, что простое отображение этой страницы потребовало пол-миллиона соединений с базой данных и нескольких миллионов sql-запросов? если это так, то вам на ближайшее время, похоже, нет резона заниматься объектной проблематикой, а стоит пересмотреть саму концепцию работы вашего движка.

    нет никакого смысла запрашивать в базе данных статическую информацию для создания одной и той же страницы, которая должна храниться в кеше файловой системы и при запросе которой апач просто должен отдавать готовый файл. запускать php апач должен только для страниц, содержащих логику приложения, то есть динамически меняющихся при каждом запросе. и уж в любом случае не для отрисовки статического интерфейса. в противном случае ваш движок будет просто бесстыдно транжирить процессорное время моего сервера и время ожидания моих клиентов.

    не так давно (лет этак с десяток тому назад) была написана тогда ещё крохотная программка, позволявшая из одного шаблона и множества файлов с содержимым создавать полноценные страницы сайта, вставляя каждый файл с содержимым в шаблон и помещая его в целевую папку в виде нормальной страницы. собранный таким образом сайт, вне зависимости от количества страниц, отличало единство интерфейса и независимость от движка. то есть статический сайт из двухсот страниц не требовал ни наличия базы данных, ни даже запуска php для его отображения. при изменении какого-либо файла с содержимым только этот файл обрабатывался (вставлялся в шаблон) и обновлялся в целевой папке. при изменении шаблона обновлялись все страницы сайта.

    с тех пор многое в ней изменилось, сегодня эта система позволяет обрабатывать несколько шаблонов, имеет развитую систему макро-команд, собственный ftp загрузчик, позволяющий выгружать на сайт только страницы, изменённые в целевой папке, а также автоматически создавать sitemap-файл, требующийся для нормальной индексации вашего сайта. программа написана на php и распространяется свободно (gpl) через sourceforge.net. я говорю про open site builder tools, что на http://osbtools.googlepages.com/. сайт, правда, на аглицком, но я как разработчик могу прояснить все детали её работы на чистом русском.
     
  9. Aleksforum

    Aleksforum Активный пользователь

    С нами с:
    4 май 2007
    Сообщения:
    8
    Симпатии:
    0
    Вы верно подметили, что страницы полностью генерируются каждый раз при запросе.
    И там поболее запросов к базе чем 2 на страницу.
    Если вы уш стали говорить о хостинге, то у моего хостера много серверов и сервер с базой данных стоит отдельно и он не один.
    Думаю что хостеру выгоднее балансировать нагрузку на разных серверах вместо того чтоб загружать файловую систему одного сервера.
    Далее подмечу вам, что мой хостер загрузку сервера меряет в % и ему глубоко по чижику сколько миллионов раз её запросили, главное чтоб я не вышел за лимит нагрузки на сервер.
    А нагрузка всех наших проектов на сервер провайдера стремится к 0-ю )))
    Да и выдача страниц клиену довольно хороша, единственное как сказал dark-demon сильно затормаживает вывод каталогов с картинками(они из базы берутся), но для клиента это почти незаметно и сидеть с секундомером никто не будет.

    Кэшировать динамики - это конечно хорошо и я думал над этой проблемой, но для этого нужно модернизировать проект так чтоб его можно было легко переделывать кусками и разным людям и как раз для этого я и хотел перейти на полноценную модель ООП.

    Очень рад, что вы мне указали мои ошибки, но именно эти я давно знаю и попытаюсь исправить.
     
  10. avm

    avm Активный пользователь

    С нами с:
    21 сен 2006
    Сообщения:
    597
    Симпатии:
    0
    Адрес:
    Москва
    Хоть сообщение stas_t и выдержано в стиле рекламного плаката, но оно верно и взвешенно, и то что он предлагает в качестве решения - очень неплохо продумано!, а ваш ход мысли Aleksforum и соответственно отношение к ресурсам, хостеру, пользователям, коду, да и к психике разработчиков (которым как вы расчитываете будет нужно "переделывать кусками и разным людям") - просто мерзкое.

    Каких вы тут реальных предложений ждете? - не ясно.
    Вам уже предложили реальное - в мусор...
     
  11. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    Aleksforum, обекты можно хранить в базе используя сериализацию :) http://php.net/serialize
     
  12. virabhadra

    virabhadra Активный пользователь

    С нами с:
    11 дек 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Praha, Czech Republic
    Вообще, против хранения шаблонов в ДБ, у меня есть одно противопоказание.
    Столкнулся у своего хостера с тем, что у него стоит ограничение 20'000 запросов за час.
    Если переборщить с количеством запросов, то можно их и вычерпать. :)
     
  13. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    virabhadra
    Это уже аргумент из категории "у моего хостера не установлен MySQL"...
     
  14. Aleksforum

    Aleksforum Активный пользователь

    С нами с:
    4 май 2007
    Сообщения:
    8
    Симпатии:
    0
    В мусор конечное хорошее предложение, но оно примерно такое же когда вы придете к врачу зуб вылечить, а он вам говорит зуб выдернуть и лечить его ненужно т.к. зуб у вас полное г...

    Поэтому такого типа предложения я рассматриваю, как бесполезная болтовня человека не разбирающегося в Веб - строительстве.

    Как я писал я хочу увидеть мысли, идеи, советы или примеры модели объектного движка.

    Сам же я выложил код движка по ссылке выше и думаю новички могут, что то почерпнуть из этого кода.
    А очень надеюсь, что ктонить знающий подкинет и мне идеи, не о том что всё хранить надо в файлах, а более интересные идеи.

    virabhadra
    20 000 запросов в час к базе очень даже хорошо, строить сайт для гигантов ИКЕА или ещё кого я пока не готов)))
    Самый посещаемый у меня проект был на 100 человек в день и это примерно 5000 запросов в день.

    dark-demon
    я думал о сериализации, а как же делать поиск по сайту, если и заголовок и текст и другие объекты поиска будут сериализованы?
    А допустим, у меня есть каталог товаров и у каждого товара есть позиция и эту позицию хочу изменить.
    Мне придётся все объекты сериализовывать у каталога, что узнать какие у них позиции? А потом всё обратно запихивать.

    Все вот говорят файлы-файлы, а если у меня непросто движок который собирает пару файлов инклудами вместе по шаблону, а что то более глобальное. Например интернет-магазин. У которого куча страниц и каталог товаров и ведение учёта покупок и панель управления и новости вы что мне советуете превратить папку(в которой лежит сайт) в кучу мусора в котором даже супер-мен ноги поломает?

    Было бы интересно услышать о хоть одной более менее нормальной СистемеУправленияСайтами, которая не использует базу для хранения.
    А то может stas_t замутил себе страничку домашнюю, собрав её из кучи нарезаных файлов и теперь думает, что и другим надо так делать ? )))
     
  15. Davil

    Davil Guest

    Даза Банных?
    Хех. Если вы считаете что 20 шаблонов - это куча мусора, в которой
    , тогда незнаю даже что тут и посоветовать можно... Ах вот - посмотрите как устроена шаблонная система в движке phpBB. Возможно вас это натолкнет на какие-либо измышления...
     
  16. virabhadra

    virabhadra Активный пользователь

    С нами с:
    11 дек 2006
    Сообщения:
    127
    Симпатии:
    0
    Адрес:
    Praha, Czech Republic
    Ну мы тут не обсуждаем, кто чем конкретно занимается, а занимаемся теоретическими основами практики :)
    Может здесь на форуме и сидит, кто-то кто делает страницу для ИКЕИ.
    Сказал я об этом как о возможном ограничении в каком-то случае.
     
  17. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Dagdamor
    Smarty тормозной не потому что он на фаилах (фаилы куда быстрее чем база данных в данном случае, к тому-же это огромное кол-во запросов на базу данных - более-менее посещаемый сайт быстро исчерпает ресурсы сервера), а потому что он слишком большой и навороченный (что почти нафиг не нужно). К тому-же Smarty это практически это скриптинговый язык ещё более высокого уровня чем PHP.
    Нормальный шаблонизатор (смотрите топик "Авторам движков на PHP", я выложил там свой движок) работает быстро и без проблем. К тому же если вы используете кеширование PHP кода (XCache, APC, Zend Encoder...) то код кешируется в оперативной памяти в виде байткода, так что быстрее уже просто некуда :)

    Aleksforum
    Если тебе нужен именно движок (не CMS), то посмотри вот это сообщение http://php.ru/forum/viewtopic.php?p=45997#45997. Движок очень хорошо продуман и написан людьми, у которых опыт в разработке WEB приложений уже более 10 лет (коллега с PHP работает с самого рождения PHP) - каких-либо отрицательный отзывов я не слышал - так, мелкие придирки больше из разряда "ну мне больше нравиться работать с классом базы данных чем с фкнкциями mysql_*, что легко внедряеться при необходимости). Там есть уже все основные необходимые составляющие: движок, структура папок, шаблоны и.т.д.
    А если тебе нужен уже какой-нить готовый интернет-магазин, то ищи скрипты и юзай (и удачи разбираться в этом кошмаре :D Мне лично проще самому смвоё написать).

    Для этого и есть база данных и SQL.

    Шаблоны надо хранить в фаилах - это факт. Это куда удобнее и работает много быстрее. Не забывайте, что любая мало-мальски нормальная фаиловая система кеширует фаилы, к которым чаще всего обращаются (XFS к примеру - суперская FS). Так что весь этот бредовый спор на тему "Шаблоны: Фаилы vs База данных" являеться чистым флеймом от незнания или лени изучить проблему. В данном случае ответ однозначен, фаилы лучше.

    Dagdamor
    Я не говорю что твоя CMF плоха, просто что-то более-менее посещаемое на этой системе не сделаешь - база данных загнёться от нагрузки, а покупать супер пупер мега навороченный многопроцессорный сервер для сайта (на который хватит самого простого сервера при правильном подходе к построению такого сайта) с небольшой, но достаточной посещаемостью, никто не будет.
     
  18. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Psih
    Хорошо, тогда продолжим аналогию: если БД такая тормозная, пользоваться ей вообще нельзя. Чем те же новости хуже шаблонов? В файлы их, и каталог товаров, и текстовые данные для галерей, и прочее. Почему люди так не делают? Да потому, что работать с данными проще, используя БД... с шаблонами та же история: манипулировать с ними удобнее, храня их в БД. Другое дело, что шаблоны обычно загоняются в систему, где бы они там ни хранились, и потом используются только на чтение. И перечитай тему еще раз - я уже писал, в каких случаях обоснован выбор в пользу БД, в каких - в пользу файлов. Я не говорил что БД "однозначно лучше", и насчет FS тоже не следует делать таких безапелляционных выводов. Попробуй ручками очистить побитый кеш Смарти на сервере, к которому у тебя нет шелл-доступа, сразу поймешь чем БД удобнее ;)

    Откуда такая уверенность?

    P.S. Смарти такой тормозной совсем не потому, что он навороченный. Никакой он не навороченный... просто в нем отсутствует понятие сборки. Каждый шаблон транслируется в отдельный PHP файл, вместо того, чтобы группу связанных шаблонов собирать в один исполняемый файл. Поэтому при каждом вызове страницы PHP вынужден читать кучу файлов снова и снова. Типичный случай, когда люди решили, что файлы "однозначно лучше", но не продумали архитектуру такого решения, в результате получили тормоза почище БД.
     
  19. Aleksforum

    Aleksforum Активный пользователь

    С нами с:
    4 май 2007
    Сообщения:
    8
    Симпатии:
    0
    Dagdamor
    Я смотрел ваш парсер и он мне понравился. Обязательно использую ваши наработки у себя в СУС.
    Может я неправильно выражался, но у меня уже есть довольно нормальная СУС (CMS), которую я хочу улучшить.
    И я вообще не вступал в спор по поводу где хранить шаблоны, а только сказал что у меня они хранятся в БД и пока что меня это устраивает.

    Davil
    Выше я писал свою точку зрения о файловой системе. Говорить очередной раз одно и тоже по-моему бессмысленно.

    Господа ну неужели нет ничего более интересного в Веб- программировании чем где хранить шаблоны?

    Допустим я начал планировать объектную модель на пхп и делаю класс страницы:

    PHP:
    1.  
    2. class _sheet
    3. {
    4.     //переменные страницы
    5.     var $id = 0;
    6.     var $name = "";
    7.     var $title = "";
    8.     var $metakeywords = "";
    9.     var $metadescription = "";
    10.     var $design = 0;
    11.     var $data = "";
    12.     var $url = "";
    13.     var $access = "";
    14.  
    15. }
    16.  
    Это простая страница без новостей и других блоков.
    Я хочу присобачить новости к странице и класс с новостями:
    PHP:
    1.  
    2. class sheet_new extends _sheet
    3. {
    4.     var $new = "";
    5. }
    6.  
    7.  
    И пишу функцию загрузки свойств из базы:
    PHP:
    1.  
    2.     function load_sheet(&$res)
    3.     {
    4.     $this->id = $res['id'];
    5.     $this->name = $res['name'];
    6.     $this->title = $res['title'];
    7.     $this->metakeywords = $res['metakeywords'];
    8.     $this->metadescription = $res['metadescription'];
    9.     $this->design = $res['design'];
    10.     $this->data = $res['data'];
    11.     $this->url = $res['url'];
    12.     $this->access = $res['access'];
    13.     return true;
    14.     }
    15.  
    Но как подключить те же новости, загрузить их и сохранить?
     
  20. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    для поиска лучше организовать специальную индексную таблицу.

    какие ещё позиции? если имеется ввиду сортировка данных, то заводи отдельное поле и по нему сортируй. а вообще, это было из разряда вредных советов :)

    не просёк, в чём сложность? конкретно у меня есть понятие "генератор данных" - это скрипт, который лежит на диске и который берёт данные от туда откуда ему удобнее. в частности он может вместо запроса к СУБД и его последующей обработки, просто выдать данные из файлового кэша.

    транслитерированный акроним от database :)

    эксперименты показали, что тормоза тут не из-за работы с файлами, а из-за php-интерпретатора. проверял банально: в цикле инклудил один скрипт, а потом заменял инклуд на eval - ничего не менялось.

    у тебя есть шаблон страницы в котором есть поля, например, $header, $footer, $leftside, $rightside, $content. для каждого из них задай объект, который будет генерировать соответствующие данные. и них есть свои поля в которые нужно подставить другие объекты. и так каскадно по ниспадающей.
     
  21. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    На общественный суд и критику :)
    Просьба тыкнуть носом если что не так

    сам класс шаблона (templates.php)
    PHP:
    1.  
    2. <?php
    3. class template{
    4.     public $_dir_tpl = '';
    5.     public $_dir_tpl_compile = '';
    6.     public $_tplvar=array();
    7.     private $_conf=array();
    8.    
    9.     function readconf($file){
    10.         if (is_file($file)) require_once($file); else  die('template->readconf: Не найден файл конфигурации - <b>'.$file.'</b> (видимо что то случилось)');
    11.         $this->_conf=$conf;
    12.     }
    13.  
    14.     function vars_add($vars){
    15.         reset($vars);
    16.         foreach ($vars as $key=>$value) $this->_tplvar[$key]=$value;
    17.     }
    18.  
    19.     function var_add($varname, $varvalue){
    20.         $this->_tplvar[$varname]=$varvalue;
    21.     }
    22.  
    23.     private function compile($file, $time){
    24.         $file_tpl=(is_file($this->_dir_tpl.$file)) ? $this->_dir_tpl.$file : die('Template->compile: файл не найден - <b>'.$this->_dir_tpl.$file.'</b> (видимо что то случилось)');
    25.         $file_tpl_compile=$this->_dir_tpl_compile.$file.'.html';
    26.  
    27.         if (((int)$time>0)){
    28.             if (!is_dir($this->_dir_tpl_compile)) die('Template->compile: не найдена папка - <b>'.$this->_dir_tpl_compile.'</b> (видимо что то случилось)');
    29.             if (is_file($file_tpl_compile) && filectime($file_tpl_compile)>strtotime('-'.(int)$time.' minute')){
    30.                 $str = $this->loadfile($file_tpl_compile);
    31.             } else {
    32.                 $str = $this->makefile($file_tpl, $file_tpl_compile);
    33.             }
    34.         } else {
    35.             $str = $this->loadfile($file_tpl);
    36.             $str = $this->var_preg_replace($str);
    37.         }
    38.         return $str;
    39.     }
    40.  
    41.     private function var_preg_replace($str){
    42.         $str = preg_replace('#\{([a-z0-9\-_]*?)\}#ise', '$this->var_replace($1)', $str);
    43.         $str = preg_replace('#\{\#([a-z0-9\-_]*?)\#\}#ise', '$this->var_conf_replace($1)', $str);
    44.         return $str;
    45.     }
    46.    
    47.     private function var_replace($match){
    48.         return isset($this->_tplvar[$match]) ? $this->_tplvar[$match] : '{'.$match.'}';
    49.     }
    50.  
    51.     private function var_conf_replace($match){
    52.         return isset($this->_conf[$match]) ? $this->_conf[$match] : '{#'.$match.'#}';
    53.     }
    54.    
    55.     function display($file, $time=0){
    56.         echo $this->compile($file, $time);
    57.     }
    58.  
    59.     function fetch($file, $time=0){
    60.         return $this->compile($file, $time);
    61.     }
    62.  
    63.     private function loadfile($file){
    64.         $str = file($file);
    65.         if (is_array($str)){
    66.             return join('' , $str);
    67.         } else {
    68.             die('Template->loadfile(): видимо что то случилось');
    69.         }
    70.         unset($str);
    71.     }
    72.    
    73.     private function makefile($file_from, $file_to){
    74.         $str = $this->loadfile($file_from);
    75.         $str = $this->var_preg_replace($str);
    76.         $fd = @fopen($file_to, 'w') or die('Template->makefile: Не могу создать файл '.$file_to.' (видимо что то случилось)');
    77.         fwrite($fd, $str);
    78.         fclose($fd);
    79.         return $str;
    80.     }
    81.  
    82. }
    83. ?>
    84.  
    это включаем в каждый файл (template.php)
    PHP:
    1.  
    2. <?php
    3. require_once('templates.php');
    4. $template = new template();
    5. $template->_dir_tpl=''; // полный путь до папки с шаблонами
    6. $template->_dir_tpl_compile=''; // полный путь до папки для скомпиленых файлов
    7. $template->readconf(''); // полный путь до файла конфига
    8. ?>
    9.  
    ну, типа индекс (index.php)
    PHP:
    1.  
    2. <?php
    3. require_once('template.php');
    4.  
    5. $template->var_add('TEXT', 'Какой то текст');
    6.  
    7. $template->vars_add(array(
    8. 'TITLE'=>'Какой то заголовок',
    9. 'NAME'=>'по моему чьето имя'
    10. ));
    11. //----------------------------------
    12. // выводить можно так
    13. $template->display('1.tpl', 1); // вторым параметром можно указать время кеширования в минутах
    14. //или так---------------------------
    15. //$str=$template->fetch('1.tpl'); // вторым параметром можно указать время кеширования в минутах
    16. //echo $str;
    17. //----------------------------------
    18. ?>
    19.  
    конфигурационный файл (config.php)
    PHP:
    1.  
    2. <?php
    3. $conf['preved']='Превед';
    4. ?>
    5.  
    файл шаблона (1.tpl)
    HTML:
    1.  
    2. <table border="1">
    3. <tr><td>{NAME}</td></tr>
    4. <tr><td>{непонятно}</td></tr>
    5. <tr><td>{TITLE}</td></tr>
    6. <tr><td>{TEXT}</td></tr>
    7. <tr><td>{#preved#}</td></tr>
    8. <tr><td>{#ne_preved#}</td></tr>
    9.  
     
  22. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда

    все перемнные в protected и управлять ими через методы.
     
  23. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    вот так??? тогда мо моему можно и вообще в приват
    PHP:
    1.  
    2. <?
    3.     protected $_dir_tpl = '';
    4.    
    5.     function set_dir_tpl($path){
    6.         $this->_dir_tpl=$path;
    7.     }
    8. ?>
    9.  
    PHP:
    1.  
    2. <?
    3. $template->set_dir_tpl('путь тута');   
    4. ?>
    5.  
     
  24. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Лучше в приват тогда, наследование то не используется.
     
  25. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    от... аж до слез...