Присяжный острослов в порядке, если Вы не используете платформу или когда Вы используете платформу, которая не имеет своей собственной системы шаблонной обработки.
Иначе большинство платформ PHP и CMS молодого поколения имеют свою собственную систему шаблонной обработки.
В целом идея системы шаблонной обработки состоит в том, чтобы иметь файлы, которые содержат почти только HTML (Файл Представления/Шаблона) и файлы, которые содержат только данные или правила бизнеса (Модель или Файлы Контроллера).
Шаблонный Файл А может выглядеть примерно так (пример от SilverStripe):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<% base_tag %>
$MetaTags
<link rel="stylesheet" type="text/css" href="tutorial/css/layout.css" />
</head>
<body>
<div id="Main">
<ul id="Menu1">
<% control Menu(1) %>
<li class="$LinkingMode">
<a href="$Link" title="Go to the "{$Title}" page">$MenuTitle</a>
</li>
<% end_control %>
</ul>
<div id="Header">
<h1>$Title</h1>
</div>
<div id="ContentContainer">
$Layout
</div>
<div id="Footer">
<span>Some Text</span>
</div>
</div>
</body>
</html>
Вы видите, что существует только несколько частей некода HTML, вставленных в места, где данные будут вставлены, прежде чем страница отправляется клиенту.
Ваш код может тогда (упрощенный), скорее смотрят что-то как:
<?php
unset($out);
if($a) $out = '[SOME CONTENT TO INSERT INTO THE TEMPLATE]';
else $out = '[SOME ALTERNATIVE CONTENT]';
templateInsert($out);
?>
большая вещь об этом: Ваш HTML виден как таковой и измененный как таковой, Ваш разработчик может понять его и не должен просматривать Ваш код, пытающийся собрать остатки от различных мест без любого шанса просмотреть то, что она делает. С другой стороны, можно внести изменения в логике без беспокойства о том, как она будет считать страницу. Вы по всей вероятности также сделаете меньше ошибок, потому что Ваш код будет компактен и therfore читаемый.
Вместо этого вы можете попробовать git subtree ( альтернативная ссылка ). Мне очень повезло с этим, я использовал как удаленные репозитории, так и чистые (не привязанные к master
истории) ветки в моем проекте.
Недавняя ветка в списке рассылки git включает исправление для того, как получить согласованное состояние репозитория с помощью одной команды. Обычно он вызывает обновление подмодуля git при смене ветвей.
http://thread.gmane.org/gmane.comp.version-control.git/130155/focus=130330