antiportal
Guest
Я тоже над этим подумал, а потом испугалсяВот бы кто на русский перевел..
Я тоже над этим подумал, а потом испугалсяВот бы кто на русский перевел..
Это точно ;-) Лучше просто почитать Bible...Что-то они наворотили такого, что без 100 грамм не разберешься.
Пока никакого псевдо-языка -- только PHP и свой класс кэширования. Теоретически можно впихнуть и смарти, но в сильных коммерческих разработках это обычно не практикуется.Кстати, в вашей системе для работы с шаблонами использовали смарти, или что-то другое?
А запросы типа ALTER TABLE... уже не модно? Как я понимаю, поля создаются раз и навсегда?В таблице создавалось новое поле текстового типа, дополнительные поля сохранялись в ассоциативном массиве, кодировались и там сохранялись
Смысла добавлять новые поля нет. Дополнительные поля на то и дополнительные, чтоб хранить в них дополнительную информацию. Заведомо известно, что они не будут участвовать в запросах. У меня порядка десятка типов документов, для каждого из которых есть как минимум несколько дополнительных полей. Используй я ALTER пришлось бы раздуть таблицу до неприличных размеров %)А запросы типа ALTER TABLE... уже не модно? Как я понимаю, поля создаются раз и навсегда?
Хотя бы потому, что она нужна. Ведь приходится решать задачи связанные не только с выводом информации, но и с добавлением, удалением, обновлением, причем как из админской части, так и из пользовательской. И здесь мой подход не особо отличается от общепринятого. Класс CDE (Create/Delete/Edit), механизм регистрации обработчиков, механизм проверки параметров, автоматизация обработки и вывода ошибок. А вот от автоматической генерации форм я отказался, у меня на то свои причины.Например логика вывода данных в шаблоне. Зачем тогда шаблон нужен? Почему бы не отказаться от ненужной прокладки в виде движка, и не использовать возможность PHP чередовать HTML и PHP код?
<table><tr><td>Login</td><td>Email</td></tr>
{foreach item=user from=$users}
<tr><td>{user.login}</td><td>{user.email}</td></tr>
<{/foreach}>
</table>
{# User::List("user_list"), undef, { OrderBy =>
[["user_createdate", "desc"]], Limit => [0, 3] } #}
{# User::List("user_list") #}
<table><tr><td>Login</td><td>Email</td></tr>
---
<tr><td>{user.login}</td><td>{user.email}</td></tr>
---
</table>
Ну опять же. Если у тебя все документы хранятся в одной таблице, то это пробелы нормализации, и конечно, твое решение просто латает этот промах. У меня похожая проблема была в ситуации, когда нужно было хранить прайсы, а они все разного формата. но я решил это отдельной таблицей для хранения данных:Смысла добавлять новые поля нет. Дополнительные поля на то и дополнительные, чтоб хранить в них дополнительную информацию
Кстати, если говорить о сматри, то мне кажется, существование сего пакета под перл было бы более оправдано =) Ведь по сути разумное использование php в шаблонах – это практически то же, что использование смарти.Ну есле на перле, тогда простительно. Было бы на пхп, то эта логика в шаблонах явно лишняя. По сути изобретение своего языка. Кстати Parser напоминает, не находишь?
Под документами я подразумеваю именно документы (т.е. публикации, новости, анонсы, отчеты и т.д.). Они очень немногим отличаются (вплоть до того, что для некоторых используются одинаковые шаблоны), чтоб плодить таблицы. Для других модулей, конечно, используются разные таблицы.Ну опять же. Если у тебя все документы хранятся в одной таблице, то это пробелы нормализации, и конечно, твое решение просто латает этот промах.
Такое решение разве не усложняет sql запросы?но я решил это отдельной таблицей для хранения данных:
| fk_price_id | fk_record_id |field_name | field_value |
Да, перечитал.Постскриптум. Дополнил свой предыдущий пост. Перечитайте
Усложняет. Но объединение 2х таблиц, не слишком ресурсоемкая операция, если есть нужные индксы. Да и работать с такими данными гораздо проще. И индексы ускаряют выборку, а тебе выборку по твоим дополнительным полям только LIKE делать. А еще, я очень быстро могу получить список всех прайсов, тк это таблица с двумя полями id и name. Т.е. с дополнительными данными я работаю только при выводе конкретного прайса.Такое решение разве не усложняет sql запросы
К этому все и пришло %) Как всегда это бывает, не оценишь решения, пока сам не столкнешься с проблемой, которое оно решает.Кстати, если много документов сложных форматов, то может лучше использовать XML?
Ну на php все это можно решать с помощю смарти или xslt. Но я тебе не советчик, тк. не то не другое не использую. Лично я противник размещать логику в шаблонах, хотя есть и много сторонников. Хотя спорить не буду, кода меньше... кстати, тут паралельно идет похожая тема: http://phpclub.ru/talk/showthread.php?threadid=55126&goto=newpostЧто скажешь по поводу приведенных мной примеров? Тривиальные (да и не тривиальные) задачи решаются просто, кода становится совсем мало. Я все это к чему, может есть недостатки в моем методе, которые я просто не замечаю? Или может возможно так же просто решать подобные задачи _правильными_ методами?
Это надолгоТему уже читаю
Самописный движок. В той теме, что я дал ссылку, в конце пример.А что используешь, если не секрет?
Согласен. Тут не столько неприязнь к логике в шаблонах, сколько... как бы сказать... не созрел я еще. Я не рвусь использовать что-то новое пока для себя не решу что это мне действительно нужно. А решение такое приходит на основе опыта. Мой движок может включать только другие шаблоны. Но меня уже посещали мысли о том, что бы указывать для этих блоков и скрипты(функции, методы...) для их обработки. Но пока я не сформулировал четко эту задачу и способ её решения, буду действовать по старинке. Тем более что в голове столько других идей, что эта стала в длинную очередьКасательно логики в шаблонах. При использовании описанной схемы я не завишу от источника данных и не привязан к какому-то конкретному методу их обработки. Бизнес логика сокрыта в реализации методов отображения. Если я захочу хранить данные, например, в текстовых файлах, мне необходимо будет переписать только эти методы, шаблоны изменениям не подвергнуться. Если мне необходимо будет расширить функциональность метода отображения, благодаря маске я смогу сделать это не заботясь о том, как будут работать уже присутствующие в шаблонах вызовы метода
Может тогда вообще технический прогресс отменим?Вообще почитал я все это, и задумался, до каких же извр... сори... удивительных вещей можно додуматься под влиянием лени.
Не бойся, с тобой тысячи девелоперов по всему свету =) Социальный опыт -- тоже опыт.Тут не столько неприязнь к логике в шаблонах, сколько... как бы сказать... не созрел я еще.
Научи, а то мы тут все ламеры... куда нам до тебя! Это я к тому что никто не мешает тебе вступить в дискусию и предложить свои идеи.смотрю никто из вас ИМХО писать не умеет 8