Я подумал, что смогу попробовать Smarty для моего последнего проекта, просто потому, что в некоторых объявлениях о работе, с которыми я сталкивался, упоминалось, что им не хватает опыта в его использовании.Я не слишком углубился в документацию, просто приобрел практические знания для использования на довольно простом сайте.Вот мои впечатления на данный момент -
Хорошо
Большинство сайтов, над которыми я работал, включая настоящий проект, следуют довольно схожей структуре (шаблону) от страницы к странице,В прошлом я просто держал обновленный пустой шаблон где-то в структуре файла и заполнял его дополнительным HTML или PHP для каждого конкретного случая.Приятной особенностью Smarty является то, что вы можете сохранить этот общий шаблон в каталоге шаблонов Smarty и заполнить его с помощью функции {extends} в шаблоне страницы презентации.Например, это будет сохраненный шаблон (отсутствующий тип документа, ТАК у меня болит голова) -
`
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Description" content="{block name=meta_description}{/block}" />
<title>My Smarty Site - {block name=pageTitle}{/block}</title>
{block name=additionalHeaders}{/block}
</head>
<body>
<div id="headerDIV">
<div id="nav-box">
<!-- Nav would go here -->
</div>
</div><!-- end #headerDIV -->
<div id="mainContainer">
<div id="generalContent">
<div id="pageTitle">
{block name=pageTitle}{/block}
</div>
{block name=pageText1}{/block}
<div id="page-bottom">
{block name=pageText2}{/block}
</div>
</div> <!-- end #generalContent -->
</div> <!-- end #mainContainer -->
</body>
`, а затем заполняется следующим образом:
{extends file="myTemplate.tpl"}
{block name=packageTitle}Simple Template{/block}
{block name=meta_description}This is a simple Smarty Template test{/block}
{block name=additionalHeaders}
<link rel="stylesheet" type="text/css" href="/css/smarty_test.css"/>
{/block}
{block name=pageText1}
<p>Hello, {$name}! This is a Smarty Test.</p>
{/block}
{block name=pageText2}
<p>This is some more text....</p>
{/block}
Таким образом, вместо того, чтобы копировать мой шаблон снова и снова для каждой похожей страницы, я просто расширяю его, используя Smarty, для содержимого этой конкретной страницы.Еще одним преимуществом является то, когда мне нужно изменить некоторые аспекты этого шаблона;вместо того, чтобы менять несколько страниц, я изменяю только одну (да, похоже на использование большого количества PHP-включений).
Плохое
Хотя я знаю, что у Smarty естьмного встроенных функций и может делать некоторые интересные вещи, чтобы действительно извлечь из этого максимум, вы должны изучить его синтаксис.И, если вы уже знаете PHP, вы изучаете что-то совершенно новое для достижения того же конечного результата.Разделение логики и дизайна велико до тех пор, пока вам не понадобится создать очень динамичную страницу с большим количеством продолжений - тогда вы обнаружите, что добавляете в шаблон множество условных операторов, циклов и т. Д., Используя синтаксис Smarty, и понимаете, что вы можете простоиспользуйте PHP.
Я планирую немного больше узнать о Smarty, просто потому, что он используется во многих приложениях, с которыми я сталкивался, и был указан как требование к работе, но я не вижу, что я используюэто так много в будущих моих проектах.