Eğer bazı şeyleri bu şekilde yapacağız iseniz, gerçek, mantık ve tasarım ayırmak istiyorum.
Ama bunu yapmak için Smarty kullanmak gerekmez.
Öncelik zihniyet ilgili. Ben insanların Smarty şok edici şeyler gördük, ve sonunda siteleri in Smarty geliştiren insanların dönüşür ve daha sonra bazı parlak kıvılcım (bir potansiyelini hafife asla onlar Smarty şablon motoru yazmak gerekir karar verecek aptalca bir fikir).
Iki bölüme kodunuzu kırmak ve bir standarda uymak için kendinizi zorlarsanız, o zaman çok daha iyi performans alırsınız.
PageLogic.php
<?php
$pageData = (object)(array()); // Handy trick I learnt.
/* Logic Goes here */
$pageData->foo = SomeValue;
ob_start();
require("layout.php");
ob_end_flush();
Layout.php
<html>
<!-- etc -->
<?php for ( $i = 1; $i < 10; $i++ ){ ?>
<?php echo $pageData->foo[$i]; ?>
<?php } ?>
<!-- etc -->
</html>
PHP çiftleşmiş motoru olarak yazılır oldu, bu yüzden en az try Eğer Smarty dalmak gerek olup olmadığını değerlendirirken önce tasarlanan görev için kullanmak gerekir.
Ayrıca size bir çiftleşmiş motoru kullanmaya karar verirseniz, default tarafından HTML kaçar tane denemek ve yerine "in tercih" nin "katılmama" Kendinizi XSS baş ağrısı bir çok tasarruf edersiniz. Smarty bu açıdan zayıf olduğu, ve bu nedenle, içinde yazılı içerik naif şablonları bir yeri vardır.
{if $cond}
{$dangerous_value}
{else}
{$equally_dangerous_value}
{/if}
Smarty şablonları gitmek ne genellikle. Sorun dangerous_value keyfi HTML olabilir $ 'dır ve bu sadece bile more kötü yerde izlenemez spagetti kod ile kodlama uygulamaları yol açar.
Eğer düşünün herhangi bir şablon dili should bu endişe hitap. örneğin:
{$code_gets_escaped}
{{$code_gets_escaped_as_a_uri}}
{{{$dangerous_bare_code}}}
DEFAULT davranış olmanın sömürüsüne kapı aksine bu şekilde, sömürü için potansiyel kapı, şablonda kolay bir şekilde görülebilir.