Ну, девелоперы, колитесь!

pachanga

Новичок
Автор оригинала: [DAN]

libxml+libxslt+libexslt. Причем периодически ставим последнюю версию из CVS.

Поделюсь. Пока что успешно реализую xml+xslt на уровне сборки информации от всех модулей в один большой DOM объект. Плюс каждый модуль дает свою часть xsl-шаблона, которая затем добавляется в общий шаблон страницы.
Потом проводится xsl-трансформация и результат выдается пользователю.
Вобщем-то стандартный подход.
Единственный момент, на котором я щас стопарюсь, это сборка данных из всяких-разных источников в xml. Пока что тупо строки конкатенирую и перевожу все в объект.
Если бы с xml-ориентированными БД поработать, может и появились бы какие-нить светлые мысли.
Да, чуть не забыл, весь программинг основан на объектно-ориентированной парадигме.
А никак админовскую часть движка глянуть нельзя? Типа demo?
 

Flying

Guest
Originally posted by pacha
Дико интересно, продолжай! Чем мы формируем xml?
В PHP есть модуль DOM XML, как раз для этого и предназначен. В 4.2.1 им даже уже можно пользоваться без большого геморроя (хотя кое-что до сих пор не доделано)
Лично я работаю с ним не напрямую, написан свой класс, котороый занимается всей черной работой.

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

Давай подробнее! :)
Да, про XSLT, Xpath я все знаю - описывай, стратегию разработки и поддержки сайта.
Разработка в моем случае основана на моем собственном движке, который берет на себя всю черную работу, обычно занимающую большую часть времени разработки web проекта. В частности там есть менеджер модулей, который, собственно и отвечает за то, чтобы модули получили все данные, необходимые для формирования страницы, обработали их и выплюнули результирующий набор данных в нужное место в XML документе. Затем этот документ достается из DOM XML и отдается на растерзание XSLT. Результат (HTML) отдается клиенту.
По поводу сопровождения. Пока я сам совмещаю должности программиста и верстальщика, поэтому в мои XSLT шаблоны верстальщикам лучше даже не заглядывать :) Однако у меня есть некоторые идеи по поводу того, как сделать все это более легким для использования именно неподготовленными людьми. Но они требуют дополнительного обдумывания, поэтому здесь я по этому поводу говорить пока не буду.
 

Poltergeist

Guest
2 Foshvad
Я например под $меню понимаю такую вещь

$menu= <<<EOD
<table>
<tr>
<td>link1</td>
<td>link2</td>
.....................
...................
</tr>
</table>
EOD;

А сформировать переменную такого вида не составляет никакого труда. Если же меню "дерево", то подход тот же , т.е. , в конце концов, переменная содержит сформированную таблицу. А в какой контейнер ее дезигнер запихнет мне уже не интересно.

А об XML почитай на msdn.microsoft.com, там много чем полезного найдешь.
 

Grey_EM

Guest
Автор оригинала: pacha
Народ! Вау! Пришел с учебы, а тут столько понаписали :)

XML + XSL - это интересно, но скажите мне, как вставлять динамику в XML? Скажем, постоянно меняющиеся "ушки", для blog проекта или автоматическую навигацию?
А что за беда. Ушки они у тебя откуда берутся? Из базы, вот и генери xml прямо из базы. Будут тебе полностью динамические ушки :)
 

[DAN]

Старожил PHPClub
Автор оригинала: pacha

А никак админовскую часть движка глянуть нельзя? Типа demo?
Демки пока нет, но могу рассказать, как CMS реализуем.
1) Для "художественных" статей используем DHTML Editor.
2) Система разграничения прав доступа к разделам сайта.
3) Навигация по админ. части такая же как на сайте.
4) Модульность всей админки + свое ядро для адм. части.

По большому счету стандартов как таковых на CMS пока нет. Поэтому каждый пишет CMS в силу своей фантазии.

На самом деле при разработки frontend'а также разрабатывается и backend. А связать все модули в одну упряжку уже не проблема. Остается чистая логика функционирования приложения, разбавленная юзабилити.
 

Grey_EM

Guest
Автор оригинала: [DAN]

libxml+libxslt+libexslt. Причем периодически ставим последнюю версию из CVS.

Поделюсь. Пока что успешно реализую xml+xslt на уровне сборки информации от всех модулей в один большой DOM объект. Плюс каждый модуль дает свою часть xsl-шаблона, которая затем добавляется в общий шаблон страницы.
Потом проводится xsl-трансформация и результат выдается пользователю.
Вобщем-то стандартный подход.
Единственный момент, на котором я щас стопарюсь, это сборка данных из всяких-разных источников в xml. Пока что тупо строки конкатенирую и перевожу все в объект.
Если бы с xml-ориентированными БД поработать, может и появились бы какие-нить светлые мысли.
Забей, xml-ориентированными БД это не для php. А собственно кто тебе мешает прямо из обычной реляционной базы генерить xml и смешивать как тебе удобно?
 

[DAN]

Старожил PHPClub
Автор оригинала: Grey_EM

Забей, xml-ориентированными БД это не для php. А собственно кто тебе мешает прямо из обычной реляционной базы генерить xml и смешивать как тебе удобно?
И как ты это видишь ? Прямо sql-запросами генерить ?
Или схемы юзать ? А при добавлении/обновлении данных как с ними работать ?
MySQL, насколько я помню, транзакций и хранимых процедур не поддерживает (4-ю я исключаю).
Расскажи плиз подробнее.
 

tony2001

TeaM PHPClub
Автор оригинала: pacha
В том-то и вся проблема! Нет у нас(точнее заказчик категорически против)CMS!!!
дикий бред
хочется - пускай руками правит скрипты, вполне известно к чему это приводит.
 

Flying

Guest
И как ты это видишь ? Прямо sql-запросами генерить ?
Или схемы юзать ? А при добавлении/обновлении данных как с ними работать ?
MySQL, насколько я помню, транзакций и хранимых процедур не поддерживает (4-ю я исключаю).
Расскажи плиз подробнее.
Ну на самом деле здесь два варианта:
1. Создавать что-то типа sql2xml конвертора, который получал бы текст запроса, DOMXML ноду и некую структуру, описывающую что и как из результатов этого запроса должно быть распихано в XML документ.
2. Разруливать результаты запроса руками.

Первый вариант интересен, но может быть применен не всегда (например при необходимости какой-то хитрой обработки результатов перед помещением их в XML). Тогда приходится идти по второму пути - разбирать ручками. Здесь тоже возможна некоторая вытоматизация процесса, но в меньшей степени.
 

[DAN]

Старожил PHPClub
to Flying:
Насчет 1 я думал написать engine, который по sql запросу формирует массив данных, а уже из этого массива формирует xml строку. Но как быть с атрибутами, CDATA'й и т.д. ?
Поэтому его сразу отбросил и остановился на 2.
Опять же остается обработка данных, пришедших от пользователя...
Вобщем, вопрос открыт и обсуждаем.
 

Flying

Guest
Originally posted by [DAN]
to Flying:
Насчет 1 я думал написать engine, который по sql запросу формирует массив данных, а уже из этого массива формирует xml строку. Но как быть с атрибутами, CDATA'й и т.д. ?
Поэтому его сразу отбросил и остановился на 2.
Опять же остается обработка данных, пришедших от пользователя...
Вобщем, вопрос открыт и обсуждаем.
На самом деле на данный момент я тоже использую вариант 2 (с некоторыми оптимизациями). Однако не далее как сегодня утром я обдумывал вариант 1 и пришел к выводу что при использовании XML для описания структуры подобной конвертации все это можно описать достаточно легко и просто. Естественно это пока только идея, конкретно ее обдумыванием и реализацией я займусь позже, но интуиция мне подсказывает что из этого может получиться толк. Сам знаешь, на XML достаточно сложные структуры описываются вполне элегантно.
 

kvn

programmer
Автор оригинала: Flying

На самом деле на данный момент я тоже использую вариант 2 (с некоторыми оптимизациями). Однако не далее как сегодня утром я обдумывал вариант 1 и пришел к выводу что при использовании XML для описания структуры подобной конвертации все это можно описать достаточно легко и просто. Естественно это пока только идея, конкретно ее обдумыванием и реализацией я займусь позже, но интуиция мне подсказывает что из этого может получиться толк. Сам знаешь, на XML достаточно сложные структуры описываются вполне элегантно.
Может поможет:
http://php.chregu.tv/sql2xml/
http://cvs.php.net/cvs.php/pear/XML_sql2xml.

типа готовые решения..
 

Poltergeist

Guest
Автор оригинала: [DAN]
Вот это уже более похоже на правду. Спасибо за линки.
А вообще-то на яве такая фишка реализуется с полоборота :-\
Как и на ПХП. Буквально за 15 минут. И тремя циклами.
 

[DAN]

Старожил PHPClub
Автор оригинала: Poltergeist

Как и на ПХП. Буквально за 15 минут. И тремя циклами.
Ты на яве девелопишь ? И сколько лет ? И сколько проектов ?
Дай исходники посмотреть, плиз. Или хотя бы ту часть исходников, которая "за 15 минут".

И еще, попробуй напиши на пхп класс, который будет разбирать данные по сущностям и формировать именно тот xml документ, который я ожидаю увидеть.
Вообще, первоначально формализовать задачу было бы неплохо. Ты, я так понял, в детали не вдавался => 3 цикла ...
 

Poltergeist

Guest
Не, я на ПХП и Delphi :) Могу за 15 минут тебе сейчас накропать скрипт который все что отдаст по запросу MySql скинуть в переменную
 

С.

Guest
Два часа проплакал в подушку из-за разбитой картины мира. До этого топика я вместе с еще одним отморозком полагал, что РНР и есть шаблонный язык. Все, что мы писали оказалось лишь макаронами по-флотски, а для "настоящего" блюда надо намесить целую кучу другого дерьма и установить целую прорву кухонного оборудования.

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

[DAN]

Старожил PHPClub
Автор оригинала: С.
Народ тянется своими шаловлимы рученками к ООП, а обычной модульности не понимает.
Народ тянется к простоте, как и во все времена :D
 

nail

Guest
Мда, сколько раз уже рассказывал про скорость Java - что _быстрее_ она чем ПХП, даже тесты сделал и статью написал, все равно до сих пор слышу такие мнения...

Автор оригинала: kvn

На жабе люди тоже не спроста пишут биг-прожекты, а она ух как тормозит...:))
 

nail

Guest
! не в обиду !

Имхо здесь мысли у многих спутанны.
Напоминает, как воду толокут в ступе.

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

В данном случае предлагаю поизучать как строятся сложные enterprise приложения. Я недавно открыл для себя книжку Мартина Фовлера: http://martinfowler.com/isa/ -- более грубокого и подробного изложения я еще не видел. После того, как прочитаешь хотя бы первую часть, все выглядит как на блюдечке.
 
Сверху