Ben PHP için oy. (PHP is bir çiftleşmiş motoru.)
function template($file, $vars) {
ob_start();
if(count($vars) > 0) { extract($vars); }
include 'views/'.strtolower($file).'.php';
return ob_get_clean();
}
Tesadüfen, aşağıdakileri yapmanız sağlar.
echo template('layout', array( 'content' => template('page', $myData) ));
PHP kendisi sadece 6 satır yeterli zaman bile, tüm başka bir şablon / düzeni motoru kullanarak rahatsız mıyım?
Edit:
Belki de bu nasıl çalıştığını net değildi.
template()
, ikinci parametre olarak bir dizi nesne ile şablonun (çok organizasyon çalışmaları için alt) adıyla adlandırılır. Verilen değişkenler gibi, boş değilse template('index',null)
, daha sonra dizi bir ilişkisel dizi olarak kabul edilir: ve her anahtar değerini içeren bir değişken haline gelir.
Dolayısıyla mantık olur:
template('my_template', array(
'oranges' => 'apples'
));
Ve "views / my_template.php" dir:
<html>
<head>
<title>Are apples == <?= $oranges ?>?</title>
</head>
<body>
<p style="color: <?= $oranges == 'oranges' ? 'orange" : 'darkgreen' ?>">
Are apples == oranges?
</p>
</body>
</head>
Yani, değişken $oranges
PHP kullanılan her zaman diziden ihraç edildi veriyi alır, $vars['oranges']
.
Böylece tüm çıkış ardından ob_get_clean()
tarafından alınan ve bir dizge olarak döndürülür. Çıkış için bu dize sadece echo
veya print
, ya da düzeni içerik olarak geçirilecek bir dizi atayın. Bunu anlamak, o zaman ben ne yazdık almak ve bunun dışında bir düzen yapmak çok kolaydır, ya da mantık ile sayfaları o çıktı JSON bile.
Bunu atılmadan önce bu cevap ile deneme için tavsiye ederiz. Bu size büyümek için bir eğilimi vardır.
Edit 2:
İstenen olarak benim proje kullanmak istiyorsunuz dizin düzenini göstereceğiz. Diğer MVC çerçeveler farklı bir yapı kullanmak olduğunu unutmayın. Ama benim sadeliği seviyorum.
index.php
application/
framework.php
controllers/
welcome.php
views/
template.php
index.php
Güvenlik amaçlı, ben bir .htaccess
dosyası olduğunu yolları her istek, js/
veya css/
olanlar hariç, index.php
script, etkili benim dizinleri gizli yapıyor. Hatta vb değişkenlerin kullanımı için yaptım eğer istediğini bir şablon aracılığıyla CSS yapabilir
Yani, yapılan herhangi bir çağrı template('template', array())
./views/template.php
otomatik olarak dosyayı yükleyecektir. Ben adında bir çizgi dahil, bu yüzden gibi, yolun bir parçası olur: ./views/posts/view.php
.
Edit 3:
Lütfen güncelleme için teşekkürler. Yani bu yolları, uygun denetleyiciye istenen url, doğru index.php dosyasında bazı kod olmalı? Bu biraz gösterebilir misiniz? Görüşleriniz denetleyicisi dizin ayna gibi de görünmüyor. Eğer biraz daha açıklayabilir misin nasıl kontrolörleri ve / veya görünümleri Haritası URL'ler? Eğer framework.php ne var? Ne yapar? Teşekkürler!
The code I've shown is a tiny excerpt of my private framework for web development. I've talked already about potentially releasing it with a dual-license, or as donation-ware for commercial use, but it's nothing that can't be written by anyone else in a short (15-21 days) time. If you want you can read my source code on GitHub... but j