$array[] = 'Sample list item 1'; $array[] = 'Sample list item 2'; $array[] = 'Sample list item 3';
include "example_tpl.php"; ?>
example_tpl.php
Код:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>Template</title> </head> <body> <h1><?=$title?></h1> <p><?=$content?></p> <ul> <?foreach($array as $item):?> <li><?=$item?></li> <?endforeach?> </ul> </body> </html>
(ветка затухает а не хотелось бы) Просто я нигде не встречал "хороших" отзывов об этом методе шаблонизации. Между тем у него много достоинств, среди них как простота, так и доступность и даже скорость. Более того свою задачу он выполняет на все сто (разделяет понятие логики приложения от логики представления) кто что об этом думает...
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
Просто потом труднее разобратся, когда очень много всего. Да и переносимость просто не очень. Большинство уже сущестующих шаблонизаторов написанны в виде классов и имеют схему $this->assign() и $this->display(). Т.к. функции обозванны именно так, что можно легко сменить шаблонизатор и поменять ТОЛЬКО шаблоны, не трогая код самого приложения (всё сводится лишь к тому, что вместо одного класса мы вызываем другой).
Да и к тому же когда мы используем шаблонизатор в виде класса, не может возникнуть конфликта имен переменных с глобальными переменными скрипта, поскольку все они создаются внутри класса и локальны для него Помоему это очень даже важно Единственный минус при использовании PHP4 - это то, что надо масивы и прочие данные большого объёма передавать по ссылке, что бы они не дублировались. PHP5 от этого недостатка избавлен, там идёт работа чисто с дескрипторами
Member
Статус: Не в сети Регистрация: 05.01.2004 Откуда: Москва
Всем привет, нужна помощь с PHP скриптом, вернее с функцией одной!
Нам в универе задали сделать сайтик не большо(интерент магазин типа)).
Естественно в интернет магазине должен присутствовать поиск товаров по названию, я это реализовал с помощью функции
Код:
stristr()
которая ищет строки в строках и она не чувствительна к регистру. Список товаров храниться в файле и все они у меня были записанны на английском языке и поиск отлично работал, я ввел товар на русском языке и поиск не пашет... Похоже
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
не факт что не понимает. Уверен что у тебя он нормально сохраняется в фаиле. Ты какую кодировку используешь? Желательно приведи тот кусок кода, где поиск и что в фаиле у тебя хранится Думаю проблема в кодировках где-то.
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
_Psih
_Psih писал(а):
Большинство уже сущестующих шаблонизаторов написанны в виде классов и имеют схему $this->assign() и $this->display().
Что мешает сделать класс ?
Код:
Class Template { function display($fullname, $array) { ob_start(); extract($array); include $fullname; $output = ob_get_clean(); echo $output; } }
Я просто пишу упрощённо до ужаса, только чтоб передать только смысл...
BorisЗарание предупреждаю что говорю глупость, но это настолько глупо что может сработать... Почему бы для уверенности что это виноват stristr() не попробовать хранить название не просто на русском, а в закодированном виде ? (base64_encode например)
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Вот код всей странички, она все прекрасно записывает в файл, но вот русские буквы записывает кракозяброй. И народ, помогите привернуть к этой страничке следующую фичу!
Если вы запустите страничку, то в самом правом столбце таблицы на каждой её строчке будет выведена форма, в которую нужно ввести число, далее вычесть это число из количества товара и измененные данные записать в тот же файл!
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
Кракозяблы из-за того, что кодировка другая. пользуйся iconv и если будешь хранить в UTF-8 всё, пользуйся mb_string библиотекой, вместо обычных функций работы со строками. Скорее всего у тебя какраз хранится всё в UTF, но ты пользуешься обычными функциями. Примени mb_string библиотеку.
Member
Статус: Не в сети Регистрация: 05.01.2004 Откуда: Москва
_Psih Да, приходится пользоваться UTF, иначе проблеммы с кодировкой на макинтошах, а мы в унивре только за ними и сидим!
А что за mb_string библиотека?
Member
Статус: Не в сети Регистрация: 05.01.2004 Откуда: Москва
virus Ты знаешь, я и так стараюсь писать красивый код, с моей точки зрения он красивый и для меня понятый... Но к сожалению у нас в университете большенство преподов тупые и дельный совет дать не могут!
Народ, если вам не сложно, то подскажите как красивый код писать...
Member
Статус: Не в сети Регистрация: 05.01.2004 Откуда: Москва
virus Извини, но в посте про шаблонизацию "а-ля Ламерс едишын" в плане оформлния ничего нового я не увидил, скажи конкретно что плохо в моем коде! Меня правда это очень интерисует!
А вот твой пост пониже...
Код:
Class Template { function display($fullname, $array) { ob_start(); extract($array); include $fullname; $output = ob_get_clean(); echo $output; } }
В плане оформления, чего здесь есть. чего нету у еня?
Код:
Class Template { function display($fullname, $array) {
Вот маленький кусочек, ты пишешь открывающуюся фигурную скобку на той же строчке, что и имя функции, но мне такой стиль не нравится, мне как-то приятнее видеть код, отредактированный следующим образом:
Код:
Class Template { function display($fullname, $array) {
} }
Если выше показанный мною подход к оформлению кода не верен или не удобочитаем, то скажите в чем моя ошибка, я буду рад рости над собой)
Цитата:
$output = ob_get_clean();
Советутете ставить пробел слева и справа от знака присваивания и наверное от знаков логических операций?
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
Я говорю не про оформление конкретно текста кода, а про логику скрипта...
У тебя скрипт выводит результат одновременно с его получением...
А нужно чтоб было как минимум 2 скрипта...
Один (как у меня example.php) получает (расчитывает, сравнивает итд) данные
Другой (как мой example_tpl.php) выводит их в браузер.
Причём в первом не должно быть HTML (абсолютно) !!! (Это важно, в этом вся суть)
Второй должен содержать только упрощённый РНР код,
необходимый только для отображения (никаких вычислений, проверок итд, только вывод)
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Member
Статус: Не в сети Регистрация: 05.01.2004 Откуда: Москва
virus Аааа, понял тебя!
А почему в первом не должно быть ШТМЛ абсолютно, если первый скрипт получает данные, которые вводит пользователь, то ШТМЛ быть обязан!
Ладно, я в универ побежал... Но есть куча вопросов, буду дома напишу!
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
Boris писал(а):
Код:
Class Template { function display($fullname, $array) {
Вот маленький кусочек, ты пишешь открывающуюся фигурную скобку на той же строчке, что и имя функции, но мне такой стиль не нравится, мне как-то приятнее видеть код, отредактированный следующим образом:
Код:
Class Template { function display($fullname, $array) {
} }
Если выше показанный мною подход к оформлению кода не верен или не удобочитаем, то скажите в чем моя ошибка, я буду рад рости над собой)
Цитата:
$output = ob_get_clean();
Советутете ставить пробел слева и справа от знака присваивания и наверное от знаков логических операций?
В данном случае это Объектно-Орентированный подход к программированию. Смысл шаблонизации в том, что в коде своего приложения ты вызываешь функции, которые присваивают шаблону переменные, а потом выводят шаблон. Тоесть шаблонизатор получается как бы отдельным приложением, для которого ядро сайта готовит данные и потом их передаёт ему. А шаблонизатор потом их выводит уже после того, как ядро сайта даёт команду на вывод. Самый яркий пример шаблонизатора (не лучший на мой взгляд, но всё же его юзают милионы) это Smarty (http://smarty.php.net). Взгляни как он работает и можешь написать что-то простенькое на его примере и поймёшь насколько это удобно. Что бы понять - надо попробовать.
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
Кстати именно на тему разделения логики я сейчас пишу статью, и уже веду переговоры с одним популярным сайтом на счёт публикации.
Если там меня пошлют нафик, то помещу на хомячёк, и дам вам всем почитать, пока что мне сказали что реализация статьи хромает и требуется доработка, однако как раз для такого случая информация в ней очень даже ценная.
Как говорится пожелайте мне удачи... (это может стать моим звёздным часом)
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения