Вы можете продолжить методично, используя сигма-нотацию, чтобы получить порядок сложности роста:
Сам язык PHP был разработан именно для этих задач, [к сожалению] он со временем стали способны на все больше, и люди, которые начинали с этот простой синтаксис начал реализовывать все более и более сложные задачи с этим странно развитым языком.
Я думаю, что вы имеете в виду наследование шаблонов, лучше всего выразить как динамическое включение файлов в PHP так же просто, как
<? require $content ?>
Если вы знакомы с принципом работы наследования классов, ваш ответ - ДА, PHP поддерживает это. Django может быть излишним, но я постараюсь очень быстро рассказать вам, как это сделать.
Примечание: я не собираюсь использовать здесь контроллер. Очевидно, что если страница является блогом, вы собираетесь создать объект blogPage, а не просто обычную страницу. ТАКЖЕ, я написал это для вас с нуля, поэтому никаких гарантий, что он работает ... но, надеюсь, это даст вам некоторые идеи.
<?php
class Page
{
protected $content_main; // Your main page content.
protected $content_leftbar; // Your left sidebar content.
protected $content_title; // Your content title.
protected $template; // Template data.
Function getTemplate() {
// Logic for determining the template to be used in here.
// Let's say it returns the location of a cached version of the template.
return $template_file_path;
}
Function populateContentBlocks() {
// This populates the $content_BLOCK variables with data using some default
// logic you have for determining where to grab that data from.
}
Function loadPage() {
// Populates variables.
$this->populateContentBlocks();
// Fetches template
include( $this->getTemplate() );
}
} // END class
Class blogPage extends Page {
Function getTemplate() {
// Logic for determining the template to be used in here.
// Let's say it returns the location of a cached version of the template.
// OVERRIDE THE DEFAULT TEMPLATE LOGIC OF THE PAGE WITH WHAT IS RELEVENT TO
// BLOGPAGE.
}
}
?>
Пример файла шаблона:
<html>
<head>
<title><?php echo $this->content_title; ?></title>
</head>
<body>
<div class="sidebar"><?php echo $this->content_sidebar; ?></div>
<div class="mainContent"><?php echo $this->content_main; ?></div>
</body>
</html>
Symfony поддерживает наследование шаблонов , он настолько похож на django, что синтаксис выглядит совместимым с django или другими красивыми движками jinja python .
Элегантность, как использование PHP в качестве языка шаблонов:
<h1><?php echo $page->title; ?></h1>
<?php foreach($page->comments as $comment): ?>
<?php echo $comment->body; ?>
<?php endforeach; ?>
<?php echo $page->comments->count(); ?>
Или, что еще более элегантно, jinja:
<h1>{{ page.title }}</h1>
{% for comment in page.comments %}
{{ comment.body }}
{% endfor %}
{{ page.comments.count %}
Извините, что откопал старый поток, но я только что выпустил библиотеку, которая выполняет наследование шаблонов в собственном PHP . Очень вдохновлен Django. Пожалуйста, проверьте это и дайте мне знать, что вы думаете:
«Наследование шаблонов PHP»