Уровень php / code и разделение html / view - PullRequest
0 голосов
/ 23 июня 2011

Обновление

Я изучил различные php-фреймворки ( yii-фреймворк выглядит особенно хорошо / интересно), и они, кажется, предлагают очень хорошие функции по сравнению с простыми движками шаблонов (включая MVC и другие функции, такие как интеграция с базой данных). Я уверен, что некоторые из разделения между кодом и отображением необходимы. Будь то простой php (как движок шаблонов), движок шаблонов (например, smarty) или фреймворк, вероятно, во многом зависит от приложения и выбора компании / программистов. (и вопрос, который я могу продолжить исследовать в свое время, и, вероятно, не получу определенных ответов)

У меня остался еще один вопрос. Можно ли иметь многоуровневую настройку (как на нескольких отдельных отдельных серверах), где выполняется PHP-код («логика приложения»), который выводится в форме, такой как XML или JSON, или в любом другом формате обмена данными, который затем отправляется на веб / HTML-сервер, который берет выходные данные из кода php и преобразует их в HTML , так что общее среднее число страниц, обслуживаемых в секунду, быстрее, чем просто использование одного уровня . (даже если этот один уровень объединит все серверы из двух отдельных уровней для себя. Также я предполагаю, что время синтаксического анализа для XML (и, вероятно, JSON) уменьшит его, но можно использовать новый протокол между двумя уровнями, который оптимизирован для этой цели.)


Я размышлял над HTML и разделением кода (как для реализации MVC, так и для того, чтобы веб-дизайнеры (как в внешнем виде / представлениях) и веб-разработчики (как в коде / контроллерах) работали независимо), и я подумал, что должно быть возможно иметь приложение серверы с PHP (Application / Business Logic / Controller) и веб-серверы, которые принимают выходные данные с серверов приложений и вставляют их в разметку HTML (Looks / Views).

Теоретически это будет работать примерно так же, как разделение сервера приложений и сервера базы данных, в то время как для одного запроса это может быть немного медленнее для одного пользователя из-за нагрузки на сеть, вы можете обрабатывать значительно больше одновременных запросов с двумя небольшими Серверы, чем один большой сервер. Например, сервер приложений может отправить свою обработанную (просмотреть независимую) информацию на веб-сервер, который затем вставит ее в HTML-код (который может отличаться в зависимости от клиента, например, в мобильных браузерах). Может быть возможно кэшировать HTML в оперативной памяти, но не в динамическом контенте, так что даже если страница выглядит довольно разной для каждого пользователя (например, Facebook), некоторое преимущество в скорости все же достигается по сравнению с одиночной комбинацией HTML / PHP. Это также, конечно, отделит HTML от кода приложения (PHP).

Я посмотрел на это и наткнулся на многочисленные движки шаблонов PHP, которые могли бы облегчить отделение HTML от кода, однако некоторые из них значительно медленнее, чем использование только PHP, и «компиляция» шаблона, кажется, не так уж и много разницы (и будет препятствовать использованию отдельных веб / HTML и код / ​​PHP серверов). Хотя использование самого PHP в качестве движка шаблонов может работать для меня как отдельного разработчика, оно не будет работать в среде с отдельными веб-дизайнерами.

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

1 Ответ

1 голос
/ 23 июня 2011

Вы изучили один из множества PHP-фреймворков? Большинство из них имеют все это в той или иной форме. Черт возьми, я сам написал несколько, хотя и со строгим механизмом шаблонов XML, чтобы избавиться от жадных разработчиков PHP. :) ( xSiteable , если вы хотите посмотреть код)

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

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

Но почему бы просто не использовать сам PHP и простые правила переписывания Apache (используя «uri» в качестве параметра)?

$theme = 'default' ;
$dbase = 'mysql; '
$logic = $_REQUEST['uri'] ;  // or some other method, like __this__ with starting folder snipped

include 'themes/top.html' ;
include 'logic/'.$logic.'/header.php' ;
include 'themes/mid.html' ;
include 'logic/'.$logic.'/menu.php' ;
include 'themes/section1.html' ;
include 'logic/'.$logic.'/section1.php' ;
include 'themes/section2.html' ;
include 'logic/'.$logic.'/section2.php' ;
include 'themes/section3.html' ;
include 'logic/'.$logic.'/section3.php' ;
include 'themes/bottom.html' ;
include 'logic/'.$logic.'/footer.php' ;
include 'themes/end.html' ;

Это грубо, быстро и обеспечивает то, что вы хотите, хотя это не элегантно, не красиво и не рекомендуется. :)

...