[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с выводом заголовка
Tokugava
я попал в затруднение немогу вывести заголовок того модуля который открыт у пользователя в данный момент....

есть главный файл index.php и в нем все обрабатываетсо... а модуль как бы вставляется в него. Тоесть есть только один заголовок и это заголовок файла index.php.

Дело в том что у меня на каждый модуль по 2 файла, .php и .tpl.
Есть файл index.php и index.tpl тоесть в php код, а в .tpl шаблон (HTML).

Шаблонизатор, вот его код:
Свернутый текст
<?php
class template
// создали класс
{
// зададим переменные
var $data = array(); // переменная для шаблонов

var $root = './theme/'; // каталог для шаблонов

var $ext = '.tpl'; // расширение для шаблонов

var $reftpl = array(); // переменная для преобразованых шаблонов

// Класс создан, далее формируем функции:

function template($dir, $ext)
{

if(is_dir($dir))
{
$this->root = $dir;
}
else
{
die('Ошибка! <b>' . $dir . '</b> - это не директория!');
}
$this->ext = $ext;
}

// Эта функция выполниется сразу после создания класса, поэтому при создании надо
// указывать директорию и расширения шаблонов (см . ниже) . Далее надо загрузить шаблон:


function load($name)
{
$nm = $name;
$dir = $this->root;
$ext = $this->ext;
$name = $dir . '/' . $name . $ext;

if(!is_file($name))
{
die('Ошибка <b>' . $name . '</b> - это не файл!');
}
$fp = fopen($name, 'r');
$data = fread($fp, filesize($name));
fclose($fp);
$this->data[$nm] = $data;
$this->reftpl[$nm] = $data;
}
// В этой функции мы считали шаблон через fread и запихнули его в две переменных:

// reftpl и data . При загрузке шаблона надо указывать имя шаблона без расширения
// (см . ниже) . Далее преобразовываем переменные:


function vars($nm, $vars = array())
{
$data = $this->data[$nm];

while(list($id, $var) = each($vars))
{
global $$vars[$id];
$data = str_replace('{' . $vars[$id] . '}', $$vars[$id], $data);
}
$this->reftpl[$nm] = $data;
}

// Тут мы преобразовали переменные и загнали в переменную reftp . И осталось вывести шаблон:

function out($name)
{
$ret = $this->reftpl[$name];
$this->reftpl[$name] = $this->data[$name];
return $ret;
}
}

Обрабатывает переменные из .php файла и выводит контент уже обработаный...
Вот код вывода, он прописан в index.php
Свернутый текст

include_once ('./theme/Default/header.tpl');
####################################
### подключение главного шаблона ###
$tpl = new template('./theme/Default/','.tpl'); # создали объект, задали каталог и расширение
$tpl -> load('index'); # зашрузили шаблон
$tpl -> vars('index',array('menu','content')); # указали какие переменные преобразовать, они должны быть заданы зарание
echo $tpl -> out('index'); # вывели шаблон

include_once ('./theme/Default/footer.tpl');

Как я уже писал у меня структура такая что индексный модуль остается неизменным в любом случае... меняются только модули которые в индекс подключаются... типо как давным давно были фреймы smile.gif

Но ближе к сути, есть файл header.tpl в нем вот такие теги <title> {title}-вот так выводитсо текст из шаблона </title>
Но проблема в том что переменная должна задаватсо в модулях, а выводитсо в header.tpl... пробовал инклюдить header после инклюда модуля... не работает...

Помогите умные люди очень, очень прошу... как можно реализовать такое?

Если понадобится дополнительная инфа все расскажу, прилеплю архив со скриптами... только бы помогли.
Прошу прощения за многабукафф... не умею я кратко объяснять... unsure.gif




Спустя 1 час, 17 минут, 26 секунд (25.08.2010 - 00:51) Rivalryzerg написал(а):
Tokugava, перед тем как я предложу свой вариант, ответьте пожалуйста на вопрос: почему вам не нравится в шаблонах нативный синтаксис PHP?

Например:

<body>
<div>
<?php echo $text ?>
</div>
</body>

Ведь нативный синтаксис никак не ограничен в конструкциях языка, в отличие от любых шаблонизаторов, хоть и несколько избыточен.

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

Спустя 8 часов, 38 минут, 3 секунды (25.08.2010 - 09:29) linker написал(а):
Rivalryzerg
Потому что шаблонизация должна помогать разделять PHP-код и HTML-верстку.

Спустя 39 минут, 55 секунд (25.08.2010 - 10:09) twin написал(а):
Цитата
Потому что шаблонизация должна помогать разделять PHP-код и HTML-верстку.

Самое большое заблуждение.
Шаблонизация призвана разделить бизнесс-логику с логикой представления. А никак не PHP и HTML.

Какими средствами это добивается - на усмторение разработчика.

Спустя 34 минуты, 18 секунд (25.08.2010 - 10:43) Basili4 написал(а):
linker
Отсюда возникает мнение что JS отделять от HTML не надо. Что в корне не верно.

Спустя 3 минуты, 55 секунд (25.08.2010 - 10:47) linker написал(а):
Цитата
Шаблонизация призвана разделить бизнесс-логику с логикой представления. А никак не PHP и HTML.
Мда, всегда думал что PHP - это бизнес-логика, а HTML - представление. Видимо в датском королевстве, что-то поменялось во времени.
Цитата
Отсюда возникает мнение что JS отделять от HTML не надо.
Я сказал HTML, JavaScript - это HTML?

Спустя 8 минут, 11 секунд (25.08.2010 - 10:55) twin написал(а):
Не. Ты опять не понял. Есть бизнесс-логика. Это скрипт, обрабатывающий данные. А есть логика отображения. Это вывод тех самых результатов.

В логике отображения в любом случае будет участвовать какой-то логический язык. Потому что есть условия if... else , есть вывод рядов таблиц в цикле и так далее. Так вот, логика отображения может быть реализована на языке шаблонизатора (вспомним смарти) или на том же PHP - нативе.

Без этого никуда не денешься.

Заблуждение в том, что суррогатный язык шаблонизаторов (всякие {VAR}) принимаются за язык разметки (HTML), хотя таковым по сути не является.

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

Спустя 10 минут, 47 секунд (25.08.2010 - 11:06) linker написал(а):
Если говорить в общем, то тут спору нет. Но здесь конкретика PHP и HTML. Суть такова, что логику представления и само представление вполне можно разделить. Логику в PHP, а представление в HTML в этом и заключается суть разделения PHP от HTML. Одно дело, когда в шаблоне {VAR}, другое дело <?= $Var ?>. Если первое легко поддается автоматизации при минимуме усилий, то во втором случае меняем шило на мыло.

Спустя 8 минут, 34 секунды (25.08.2010 - 11:15) twin написал(а):
Шило на мыло меняется как раз в первом случае. В случае, когда в HTML суется непонятно что под видом языка шаблона.

Есть нормальная переменная. Есть процедура вывода её непосредственно в разметку. Для того собственно и придуман был PHP. Для чего переворачивать все с ног на голову? Считывать готовый HTML на сторону PHP, разбирать его там всякой автоматизацией и потом выдавать результат той же процедурой.

Ведь в любом случае вывод будет осуществлен конструкцией echo или print, а это PHP как не крути.

Где разделение? Да и зачем оно, если сама концепция языка PHP - соединить динамику и статику?

Это все горе от ума называется. И черезжопные решения.

Спустя 28 минут, 33 секунды (25.08.2010 - 11:43) linker написал(а):
Цитата
Есть нормальная переменная. Есть процедура вывода её непосредственно в разметку. Для того собственно и придуман был PHP. Для чего переворачивать все с ног на голову?
Я знаю, что ты закостенелый консерватор. smile.gif

Спустя 6 минут, 4 секунды (25.08.2010 - 11:49) twin написал(а):
Неееет. Я то как раз мыслю прогрессивно. Потому что шаблонизация в извращенном виде - уже считается чуть ли не стандартом. Просто потому, что так принято.
А до сути докопался мало кто. А кто докапался - бросили давно эти попсовые игрушки и пишут нормальный хард-код.

Спустя 5 минут, 15 секунд (25.08.2010 - 11:54) linker написал(а):
smile.gif Хард-кодом, будет cgi-приложение на ассемблере, мы же прогрессивные smile.gif

Спустя 3 минуты, 28 секунд (25.08.2010 - 11:58) Basili4 написал(а):
linker
Прям и не сложно. CGI приложение это ровно такое еже консольное приложение только у него стандартный вывод не на экран а в поток браузера( не знаю как это правильно называется )

Спустя 5 минут, 13 секунд (25.08.2010 - 12:03) twin написал(а):
Цитата
Хард-кодом, будет cgi-приложение на ассемблере, мы же прогрессивные

Прикольно. smile.gif Я прям ждал. Почему то все подобные холивары не обходятся без упреков в асме и бейсике. smile.gif

Все всегда хорошо в меру. И кстати, высоконагруженные ресурсы совсем не брезгуют CGI.

А по твоей логике скоро напишут шаблонизатор для смарти, ведь не такой уж там простой язык. РНР по сути и есть шаблонизатор в части отображения, маразм какой то писать еще один на нем же.

Спустя 22 минуты, 52 секунды (25.08.2010 - 12:26) linker написал(а):
Basili4
Не сложно, просто долго и мучительно.

twin
Про хардкор сам упомянул. Я только уточнил, что есть почти настоящий хардкор, а не мнимый.

Да не брезгуют, только пишут их не на PHP и даже не на асме, а на C/C++ и с таки твоим не любимым ООП.

По моей логике, есть прогресс и глупо не пользоваться его плодами.

P.S. Смарти я сам не люблю, ибо есть куда более продвинутые методы шаблонизирования и разделения логик.

Спустя 52 минуты, 56 секунд (25.08.2010 - 13:19) twin написал(а):
Цитата
а на C/C++ и с таки твоим не любимым ООП.

Не передергивай. Я не люблю ООП только в php, ибо он крив и совершенно ненужен. А в сишке очень даже.

А по твоей логике вот пожалуйста - свежайшие темы.
раз, два

В первой уже поперло - вставить PHP в смарти. Верх маразма.
Во второй - запутался человек в трех соснах, хотя проблема выеденного кока не стоит, если не этот смарти-бардак.
Вот и весь прогресс.

Это не прогресс, а дурь. С дуру то можно поломать не только кости)))
Цитата
P.S. Смарти я сам не люблю, ибо есть куда более продвинутые методы шаблонизирования и разделения логик.

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

То есть смысл такой. Наступил прогресс. Изобрели супер-пупер кухонный комбайн (шаблонизатор), как не пользоваться то... Если делаем венигрет, то сначала порежем свеклу и морковку, потом сунем в него, он смешает все это в переменную, разделит регулярками обратно и выдаст опять по раздельности - смешивай ложкой (PHP). Для чего, если уже на входе все было раздельно (переменные в PHP, а разметка в HTML)?

Не нужен мне такой прогресс...

Спустя 31 минута, 39 секунд (25.08.2010 - 13:51) Tokugava написал(а):
Цитата (Rivalryzerg @ 24.08.2010 - 21:51)
Tokugava, перед тем как я предложу свой вариант, ответьте пожалуйста на вопрос: почему вам не нравится в шаблонах нативный синтаксис PHP?
Ведь нативный синтаксис никак не ограничен в конструкциях языка, в отличие от любых шаблонизаторов, хоть и несколько избыточен.

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

Я ведь не писал что мне не нравитсо нативный синтаксис smile.gif
Дело в том что этот сайт... вернее почти движок... это мой первый серьезный сайт, и я хочу усложнить себе задачу по максимуму.

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

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

Натив-синтаксис... будет очень просто... поэтому я и подключил шаблонизатор. smile.gif

Конечно можно было бы тот же смарти подключить... но я хочу чтоб в сайте был только мой код. Который я понимаю до последней ";" smile.gif

twin

Помнитсо когда то давно... у меня был сайтик в интернете... на движке php-nuke, там был натив-синтаксис... и верстать темы под этот движок... было для меня очень сложно..

Поэтому я перешол на Data Life... мне стало гораздо проще... гораздо легче было верстать шаблон подставляя вмсето... к примеру <?php echo бла..бла..бла...?>? вот такой тег {тег}.. smile.gif приемущество шаблонизатора в этом вопросе я оценил с полна.

З.Ы. А по теме есть мысли у кого? Я что то так ничего и не сообразил... пробовал всяко... даже вьюшку создавал для header... ничего не добился. Мне кажетсо что можно какую то функцию написать... облазил весь php.su не нашел ничего подходящего unsure.gif

Спустя 14 минут, 30 секунд (25.08.2010 - 14:05) twin написал(а):
Цитата
гораздо легче было верстать шаблон подставляя вмсето... к примеру <?php echo бла..бла..бла...?>? вот такой тег {тег}..  приемущество шаблонизатора в этом вопросе я оценил с полна.


Ну во первых не вижу разницы между <?php echo бла..бла..бла...?> и {тег}
Во вторых, я тоже не юзаю натив. У меня свой способ. Что то среднее. Если интересно, тут.

Я не стану утверждать, что он лучший. Каждый пишет так, как ему нравится.

Я просто всегда резко против того, что всякую необоснованную дурь типа шаблонизаторов воздвигают в ранг прогресса и чуть ли не единственно верного решения.

У меня куча обоснований против. smile.gif

Спустя 7 минут, 49 секунд (25.08.2010 - 14:13) Tokugava написал(а):
Соглашусь... шаблонизатор это далеко не прогресс... мне кажется что это просто иной способ записи того же что можно записать и без него...
Когда же прогресс, должен подразумевать что то абсолютно новое.

Спустя 27 секунд (25.08.2010 - 14:13) linker написал(а):
twin
А зачем в сях ООП? Обходились C-программисты без C++ 15 лет как-то и многие так и продолжают обходиться. Да ООП в C++ продвинуто, но тоже весьма до такой степени, что извраты со смарти в PHP просто отдыхают.

В PHP ООП реализован не криво (криво это к JavaScript например), просто недостаточно. Главное, что основные парадигмы соблюдены, все остальное - это фичи.

Кстати, примеры кривизны реализации ООП в PHP, основываясь не на C++ модели ООП, а именно на самом понятии ООП и его принципах, в студию.

По поводу примеров, я могу привести топики, где такая же каша и без всяких смарти.

С дуру можно любую полезную вещь довести до безобразия.

Ну подумай, что очень похоже на HTML?

Спустя 16 минут, 54 секунды (25.08.2010 - 14:30) twin написал(а):
Цитата
В PHP ООП реализован не криво (криво это к JavaScript например), просто недостаточно. Главное, что основные парадигмы соблюдены, все остальное - это фичи.

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

На кой в PHP загружать оперативку кучей дерьма, когда работает программа доли секунды и требует далеко не всегда все то, что понаварочено в классах.

Ну да это другой холивар.

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

Цитата
Ну подумай, что очень похоже на HTML?

Мне не надо думать, что похоже. Похоже - это эрзац. Есть HTML, он стандартизирован, общепринят, и нечего придумывать всякую ересь.

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

Ну не вижу я ни одного пункта, по которому "классическая" шаблонизация имеет преимущество. Кроме как - модно это.

PS. Пропустил это:
Цитата
Кстати, примеры кривизны реализации ООП в PHP, основываясь не на C++ модели ООП, а именно на самом понятии ООП и его принципах, в студию.
одного отсутствия множественного наследования - уже за глаза. Это не просто недостаток. Это такая грабля, которая портит всю кровь при разработке нестандартного ПО. Конечно, можно напридумывать костылей плана прототипов и интерфейсов, но на кой... Как у нас говорят - чтобы наработаться?

Спустя 31 минута, 49 секунд (25.08.2010 - 15:02) linker написал(а):
Цитата
Эти фичи на грани багов

Ну блин, примеры в студию, это ж не базар.
Цитата
Дело тут даже не столько в кривизне, сколько в ненадобности.

Почему Си надо, а PHP не надо (Си и без ООП более продвинут чем PHP)?
Цитата
Этот язык придуман для создания небольших веб-приложений.

Это было 15 лет назад, если ты не заметил, то на дворе 21-век и время homepage давно уже прошло. PHP вырос в инструмент профессиональных web-разработчиков и с этим надо мириться.
Цитата
На кой в PHP загружать оперативку кучей дерьма, когда работает программа доли секунды и требует далеко не всегда все то, что понаварочено в классах.
Ну на кой черт тебе инклудить либу с десятком функций, даже если в конкретном месте PHP-скрипта, будешь использовать только одну? Тебе жалко оперативки? В том-то и дело, что забрал, поработал и отдал обратно, она ж не занимается постоянно. БК и Спектрумы с их 64К памяти, тоже давно вышли из моды.
Цитата
Если люди не могут разобраться в простых вещах, зачем усугублять еще всякими смартями и прочим дерьмом
Это другой вопрос и относится он не к PHP, C/C++, Паскаль и прочее, а к теме нафига вообще заниматься программированием, если ты дуб. У меня есть другая поговорка: "Плохому танцору сам знаешь что мешает".
Цитата
Мне не надо думать, что похоже. Похоже - это эрзац. Есть HTML, он стандартизирован, общепринят, и нечего придумывать всякую ересь.
Одно другому не мешает или XML в топку?

Верно мыслишь, это бизнес. Но, почему так дорого стоит Бентли или Феррари? Эксклюзив, выполненный вручную. А почему другие достаточно дешевые? Автоматизация, конвеер, унификация и прочее сокращение накладных расходов. Дальше сам поймешь почему так и для чего.

P.S. Множественное наследование не является парадигмой ООП, а относится к разряду фич. Это все, что можешь предложить?

Спустя 21 минута, 48 секунд (25.08.2010 - 15:24) Rivalryzerg написал(а):
Ого у вас тут обсуждение со вчера =)
За долгое время я спрашивал у поклонников шаблонизаторов: какие плюсы дает это дело, зачем вообще использовать шаблонизатор? Ни разу еще не услышал весомого ответа.

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

Где-то вычитал: все проходят через смарти, но кто-то развивается дальше и отказывается от него, а кто-то продолжает его использовать =) Ничего личного.

Спустя 3 минуты, 4 секунды (25.08.2010 - 15:27) linker написал(а):
Не использовал смарти, не использую и даже не собираюсь никогда.

Спустя 1 минута, 3 секунды (25.08.2010 - 15:28) twin написал(а):
Цитата
Ну блин, примеры в студию, это ж не базар.

Примеры я приводил в этой теме, не хочу повторяться.

Цитата
Почему Си надо, а PHP не надо (Си и без ООП более продвинут чем PHP)?

Именно по этому. У PHP своя задача. Это интерпретируемый язык, а значит создан специально ближе к народу. Со всем, что от него требуется, он прекрасно справляется и без этих выкрутасов.

Цитата
Это было 15 лет назад, если ты не заметил, то на дворе 21-век и время homepage давно уже прошло. PHP вырос в инструмент профессиональных web-разработчиков и с этим надо мириться.
Ерунда. Никто никогда не будет делать серьёзных проектов на интерпретируемом языке. И 21-й век тут не при чем. Этот язык заполняет свою нишу, куда никак не укладывается ООП парадигма, как бы не старались её туда силком затолкать апологеты. Мириться с этой дурью под возгласами - говнокодер! я не собираюсь. Ибо это противоречит здравому смыслу. И это не только мое мнение. Очень многие продвинутые прогеры считают так же. Если занимаются свободным программированием, а не находятся в рамках корпоративных законов или определенного проекта.
Цитата
Ну на кой черт тебе инклудить либу с десятком функций, даже если в конкретном месте PHP-скрипта, будешь использовать только одну? Тебе жалко оперативки? В том-то и дело, что забрал, поработал и отдал обратно, она ж не занимается постоянно.
мне жалко. Я найду что с ней делать и без этого. Да и не в том даже дело, дело в том, что основной положительный момент ООП - повторное использование кода - в php трещит по швам. Так как все необходимое уже решено на уровне PHP функций. А все эти надстройки на 99% - разовые. Ремарка - классы, как пространство имен, дело хорошее. Я имею ввиду как обычно - общую архитектуру. Отдельные классы, если они самодостаточны, использовать можно и должно. А если все это заплести в клубок парадигмы - о повторном использовании речи быть не может. Если конечно это не визитка на три страницы.

Цитата
Это другой вопрос и относится он не к PHP, C/C++, Паскаль и прочее, а к теме нафига вообще заниматься программированием, если ты дуб. У меня есть другая поговорка: "Плохому танцору сам знаешь что мешает".

Это как раз тот вопрос. Потому что разработчик в погоне за легким хлебом совершенно не задумывается о последующей поддержке. И во что она выльется заказчику. Ему придется искать не просто хороших танцоров, а чуть ли не криптографов, чтобы разобраться во всех этих хитросплетениях, которые сочиняет топикстартер, мотивируя этим:
Цитата
Поэтому я перешол на Data Life... мне стало гораздо проще... гораздо легче было верстать шаблон подставляя вмсето... к примеру <?php echo бла..бла..бла...?>? вот такой тег {тег}..  приемущество шаблонизатора в этом вопросе я оценил с полна.
Разработчики смарти и прочих суррогатов ушли не далеко. Стандарта то нет.

Цитата
Одно другому не мешает или XML в топку?

Причем тут XML? Я вот на флэш писал сайты, тоже сюда приплести?


Цитата
Верно мыслишь, это бизнес. Но, почему так дорого стоит Бентли или Феррари? Эксклюзив, выполненный вручную. А почему другие достаточно дешевые? Автоматизация, конвеер, унификация и прочее сокращение накладных расходов. Дальше сам поймешь почему так и для чего.
Вот именно - бизнесс. А твои доводы похожи на отечественный автопром. Сделаем быстро, дешево, хрен с ним, что потом автолюбители будут ладу-калину всеми матами крыть. Да еще заручимся поддержкой правительства.

Денег то ты получишь, а совесть как?






Спустя 6 минут, 23 секунды (25.08.2010 - 15:34) Rivalryzerg написал(а):
Использовать шаблонизатор только для того, чтобы вместо <?php echo $i ?> писать {$i} как минимум непрофессионально =) Это никак не ускорит разработку проекта, но принесет целую кучу проблем при самой разработке, а также уменьшит гибкость внутри самого шаблона.

Спустя 16 минут, 58 секунд (25.08.2010 - 15:51) linker написал(а):
Читал, уже давно. Извини, но кроме твоего, исключительно, субъективного мнения там нет ничего полезного. Ну так что там с фича-багами?

Интерпретируемый неравно простой. Судя по тому говнокоду, который льется ручьями, PHP далеко не так прост, как его малюют. Я еще раз, хочу заострить твое внимание, что homepage давно вышли из моды, а PHP вырос до серьезного инструмента для разработки серьезных web-приложений. Для тебя одного, без конвеера, без унификации и прочего PHP сойдет и самой первой версии.
Цитата
Ерунда. Никто никогда не будет делать серьёзных проектов на интерпретируемом языке. И 21-й век тут не при чем. Этот язык заполняет свою нишу, куда никак не укладывается ООП парадигма, как бы не старались её туда силком затолкать апологеты.
Однако делают, хотя серьезность бывает разной от магазина на диване, до расчета термоядерной реакции. Все стараются занять свою нишу, C/C++ тоже занял свою нишу и не стоит сомневаться в том, что появление C++ и ООП вообще, не продиктовано именно требованием времени, современным тенденциям и необходимым/необратимым прогрессом. Все течет все меняется. Просто так ничего не появляется.
Цитата
Да и не в том даже дело, дело в том, что основной положительный момент ООП - повторное использование кода - в php трещит по
Опять же повторюсь, ты просто не умеешь готовить. В моей практике, такого треска не наблюдается, у криворучко вполне возможно.
Цитата
Потому что разработчик в погоне за легким хлебом совершенно не задумывается о последующей поддержке. И во что она выльется заказчику
По моему это не проблема инструмента разработки ибо не важно на чем написана плохая программа, она просто плохая, а не потому что ее написали на PHP с использованием ООП.

Пиши дальше на флэш, только без HTML твой флэш-сайт никому не нужен, ни тем более поисковику. XML - стандарт, флэш - нет.
Цитата
Вот именно - бизнесс. А твои доводы похожи на отечественный автопром.
Мои доводы: пиши качественно, не можешь - не пиши.

Спустя 36 минут, 11 секунд (25.08.2010 - 16:27) twin написал(а):
Цитата
Ну так что там с фича-багами?
Ты о чем? Я написал уже несколько раз про множественное наследование, этого не достаточно?
Цитата
Судя по тому говнокоду, который льется ручьями, PHP далеко не так прост, как его малюют.

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

PHP чем и хорош, что можно постоянно находить новые решения, импровизировать. На той же JAVA так не выйдет. Да и на CИ не так просто.

А ты со своими парадигмами пытаешься затолкать этот многогранный инструмент в рамку ООП. Это рамка, как не крути, ибо накладывает кучу ограничений.

Под этим соусом тебе и кажется, что:
Цитата
PHP вырос до серьезного инструмента для разработки серьезных web-приложений.
Я тебя умоляю. Сейчас ты начнешь убеждать меня, что без ООП серьёзного проекта не реализовать. Чушь.
Пишутся отличные проекты и процедурно и императивно, на то и PHP. Тот же PMA написан процедурно, а пользуется и хвалит весь мир. Или это маленький проект?

Цитата
Для тебя одного, без конвеера, без унификации и прочего PHP сойдет и самой первой версии.
А что ты пишешь на конвеере? Магазины? Дак че их писать, все давно написано. И ООП тут вообще не в строчку.
Разработать индивидуальный проект, специфичный - вот я посмотрю, как оно тебе поможет. Особенно на конвеере. Когда один пишет один класс, второй - другой, третий пытается все это в кучу слепить. Правильно же Хьюз сказал - сначала придумываются проблемы, решив которые мы сможем решить задачу. Вместо того, чтобы просто решить задачу.
Цитата
Опять же повторюсь, ты просто не умеешь готовить. В моей практике, такого треска не наблюдается, у криворучко вполне возможно.

Да не криви душой. Если у тебя есть класс для БД и еще парочка, которые ты используешь во всех проектах - это одно. А если придется делать что то нестандартное (может тебе не приходится правда), то все равно ты начнешь писать новый класс. Пусть даже есть похожий. ну или как минимум будешь его переделывать. Никак ты не сможешь вынуть его из одного сайта и сунуть в другой. Ну может конечно ты фреймворк сочинил, то тогда да. Только это еще большая дурь, чем ООП в чистом виде.

Цитата
По моему это не проблема инструмента разработки ибо не важно на чем написана плохая программа, она просто плохая, а не потому что ее написали на PHP с использованием ООП.
почему же все, кто отстаивает позиции ООП парадигмы, придерживаются одних и тех же аргументов. Как под копирку. Мол вот хорошо написанная программа на ООП - это круто. Вот мол все вокруг не умеют писать на ООП, а потому и плохо всё. А вот, мол, я умею - и все хорошо.
А я скажу почему. Это написано в книгах по ООП. Как в библии. Прими как должное - бог есть. И не вздумай усомниться. Потому и:
Цитата
Извини, но кроме твоего, исключительно, субъективного мнения там нет ничего полезного

А ты просто как обычно не потрудился вникнуть в аргументы. Кстати, там в первых же постах приводится мнение (тоже субъективное?) вполне авторитетных разработчиков, коль на то пошло. Не только моё.

Может я и не умею готовить, однако я не видел того, кто бы умел. Одни пустые слова. Как откроешь чей-нибудь код, кто так же брызгал слюной - плакать хочется.
Самое смешное, обычно вы сами себя же какой и поливаете. Кто, мол, так пишет на ООП? Это говнокод! Вот я Дартаньян.


Цитата
Пиши дальше на флэш, только без HTML твой флэш-сайт никому не нужен, ни тем более поисковику. XML - стандарт, флэш - нет.
Причем тут флэш теперь? И XML причем? Речь шла о шаблонизации. О том, как разделить PHP и HTML (твои слова), а не о других стандартах.

Спустя 1 час, 7 минут, 12 секунд (25.08.2010 - 17:35) Tokugava написал(а):
Куку... ребят, а про меня забыли??? smile.gif
По теме есть идеи? rolleyes.gif

Спустя 46 минут, 18 секунд (25.08.2010 - 18:21) Rivalryzerg написал(а):
Tokugava, обычно это делается так:
есть класс Template.
где-то в начале index.php создается экземпляр этого класса:
$template = new Template();


и он доступен и в index.php и в любом подключаемом модуле.
Переменные, которые должны отображаться в шаблонах, добавляются с помощью метода класса:
$template->set('header_title', 'Чудо заголовок для хедера');

сам класс в этот момент сохраняет эти переменные где-то у себя $template->vars[]

в конце index.php нам нужно отобразить шаблон.
вызывается что-то типа
echo $template->render('index.tpl');

В этом методе происходит 2 действия:
1. идет обработка ваших специальных тегов
2. отображение результата

в простейшем случае можно просто заменить теги { и }:
$output = replace("{", "<?php echo $this->vars['", $output);
$output = replace("}", "'] ?>", $output);
и далее просто заинклюдить скомпилированный шаблон. Но это лишь образец. Конечно же нужно более грамотно обрабатывать теги в шаблоне.

С таким же успехом можно добавить тег {include ''} чтобы можно было вызывать другие шаблоны.
Главное суть в том, что переменные, которые мы хотим видеть в шаблонах, хранятся в экземпляре шаблонизатора, и доступны в любом шаблоне.

А вообще лучше не изобретать велосипед в виде очередного шаблонизатора. Достаточно просто понять суть и принцип его работы.

PS: повторюсь, что для меня лично нет ничего лучше родного пхп синтаксиса, хотя очень долгое время я использовал смарти. я очень сомневаюсь, что я когда либо еще вернусь к использованию шаблонизаторов, чего и вам советую.

Спустя 4 часа, 25 минут, 55 секунд (25.08.2010 - 22:47) linker написал(а):

Спустя 1 час, 9 минут, 15 секунд (25.08.2010 - 23:56) Tokugava написал(а):
Цитата (Rivalryzerg @ 25.08.2010 - 15:21)
Tokugava, обычно это делается так:
есть класс Template.
где-то в начале index.php создается экземпляр этого класса:
.........

Премного благодарен! То что нужно... ну ето на первый взгляд... сегодня я уже не в том состоянии чтоб что то писать, обязательно с утра гляну.
Очень надеюсь на вашу помощ если вдруг не разбирусь smile.gif
Спасибо.

Спустя 15 часов, 12 минут, 55 секунд (26.08.2010 - 15:09) Tokugava написал(а):
Rivalryzerg
Что то я не пойму... как понять создается экземпляр класса?
У меня шаблонизатор инклюдитсо в index.php, переменные задаю, но проблема то как раз в том что он почему то не подставляет переменную {title}, туда где она должна быть... вобщем мне сложно объяснить на пальцах привожу код индекса с комментариями:
Свернутый текст

<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
include_once ('./templater/templater.php');
# include_once ('./templater/variables.php');

#####################################################
### получение гет переменной для конструкции свич ###

$page = !empty($_GET['page']) ? $_GET['page'] : NULL;

[
b]include_once ('./theme/Default/header.tpl');[/b]// вот тут инклюдится файл header.tpl в котором содержатся мета-теги и собстно заголовок <title>{title}</title>...
########################
### подключение меню ###

ob_start();
include_once ('./theme/Default/menu.tpl');
$menu = ob_get_contents();
ob_end_clean();
###########################
### подключение модулей ###

ob_start();
switch($page) {
///////////////////////////////////////////
case 'main':
include_once ('./modules/main/main.php');
break;
/////////////////////////////////////////
case 'board':
include_once './modules/board/board.php';
break;
///////////////////////////////////////////
default :
include_once ('./modules/main/main.php');
break;
///////////////////////////////////////
}
$content = ob_get_contents();
ob_end_clean();
#############################################

[b]####################################
### подключение главного шаблона ###

$tpl = new template('./theme/Default/','.tpl'); # создали объект, задали каталог и расширение
$tpl -> load('index'); # зашрузили шаблон
$tpl -> vars('index',array('menu','content')); # указали какие переменные преобразовать, они должны быть заданы зарание
echo $tpl -> out('index'); # вывели шаблон[/b]
///Вот так шаблонизатор все обрабатывает.

include_once ('./theme/Default/footer.tpl');


Попробую объяснить мою задумку по поводу заголовков...

Будет таблица БД мускул...
В ней у каждого модуля будет свой заголовок... description...
Задача:
В зависимости от АКТИВНОГО в данный момент модуля, подставлять его заголовок в отдельный (header.tpl) файл.

Думаю для полноты картины выложу код header.tpl:
Свернутый текст
<!-- header.tpl -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Вот суда подставлятсо должно значение с помощью тега {title}</title>
</head>

<!-- header.tpl over -->


Да, еще...
Цитата
С таким же успехом можно добавить тег {include ''} чтобы можно было вызывать другие шаблоны.

Объясните пожалуста подробней, после того как разберусь с заголовком, эта задача по смене шаблона встанет ребром.
Помогите пожалуста, без вашей помощи мне не разобратсо unsure.gif

Спустя 6 минут (26.08.2010 - 15:15) Nikitian написал(а):

ob_start();
include_once ('./theme/Default/header.tpl');
$header = ob_get_contents();
ob_end_clean();

Далее распарсиваете $header

Или я неправильно понял ваш шаблонизатор?

Спустя 16 минут, 55 секунд (26.08.2010 - 15:32) Tokugava написал(а):
Нет... вероятно не правильно, нет смысла буферизировать header.tpl...
он и так нормально выводитсо... нужно чтоб ОН отображал переменную из другого файла.

Спустя 12 минут, 28 секунд (26.08.2010 - 15:44) Tokugava написал(а):
Nikitian
Я полный нуб! Спасибо вам, я вас не правильно понял... все работает!
Схема оказывается проста как апельсин smile.gif Буферизировать header и вывести после объявления переменной title от подгружаемого модуля!!!
Спасибище вам огромадное!


_____________
人類の敵
Чем умнее человек, тем легче он признает себя дураком!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.