Herhangi Hafif, PHP tabanlı, düzen çerçevesi ... Biliyorum?

8 Cevap php

Ben hafif, PHP tabanlı, düzen çerçevesi arıyorum. Zend Framework, düzenleri nasıl kullandığı gibi, ben bir düzen şablonu oluşturmak ister ve gerekli sayfaları için sadece içerik bulunmaktadır olacaktır.

<html>
<head>
<title><?= $pageTitle ?></title>
</head>
<body>
<?= $content ?>
</body>
</html>

Herkes bunu yapar bir şey biliyor musun? Ben Zend Framework kullanmak istiyorsunuz, ama ben elde etmek istediğim için sadece çok fazla.

8 Cevap

Ben aslında örnekler ve tam bir dokümantasyon ile birlikte europaphp.org az birini serbest bırakmak üzereyim. Bu sözleşmeler ve kodlama standartlarında Zend Framework çok benzer. Zaman yapılır bir şey göndeririz; muhtemelen önümüzdeki hafta içinde.

Sen de kodunu alabilirsiniz: [http://code.google.com/p/europa/source/browse/#svn/trunk/Sandbox - Varsayılan] [1].

Bu bağlantı, sadece indirmek ve herhangi bir yapılandırmaya gerek kalmadan kullanmaya başlayabilirsiniz Sandbox için son svn getirecektir.

Şu anda, orada en herhangi başka bir PHP çerçevesinde daha hızlı.

[1]: http://code.google.com/p/europa/source/browse/#svn/trunk/Sandbox - Standart

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

Süper-hafif istiyorsanız, output buffering ne istediğinizi oluşturmak için bazı karışık bir auto-prepend dosyasını kullanabilirsiniz. Yeni başlayanlar için, size prepend kurmak ve dosyaları eklemek gerekir - (muhtemelen de, prepend yapmak ve ziyaretçiler için okunamayan dosyaları eklemek isteyeceksiniz) ve .htaccess dosyasına aşağıdaki satırları koymak:

php_value auto_prepend_file prepend.php
php_value auto_append_file  append.php

Sonra prepend.php dosyası, çıktı tamponlama açmak isteyeceksiniz:

<?php
ob_start();

append.php, sen çıktı tamponunun içeriğini kapmak tampon temizlemek ve (bu örnekte, ben bir varsayılan sayfa başlığını ayarlamak) istediğiniz herhangi bir içerik diğer işlemleri yapmak isteyeceksiniz içinde.

<?php
    if (!isset($page_title)) {
        $page_title = 'Default Page Title';
    }

    $content = ob_get_contents();
    ob_end_clean();
?>
<html>
    <head>
        <title><?php echo $page_title; ?></title>
    </head>

    <body>
        <?php echo $content ?>
    </body>
</html>

Bundan sonra, normal olarak her sayfayı yazabilirsiniz. İşte bir örnek index.php

<?php
    $page_title = "Index Page!";
?>

<h1>This is the <?php echo __FILE__; ?> page</h1>

... Ve bir örnek other.php o yarım ilginç bir şey yapar:

<?php
    $page_title = "Secondary Page!";
?>

<h1>This is the <?php echo __FILE__; ?> page</h1>
<p>enjoy some PHP...</p>

<ol>
    <?php for ($i = 1; $i <= 10; $i++) : ?>
        <li><?php echo "$i $i $i"; ?></li>
    <?php endfor ?>
</ol>

Ve bitirdiniz. Sen böyle sona ekleme DB bağlantısı başlatılıyor gibi, bu biraz üzerinde büyüyebilir, ama bir noktada, muhtemelen yolları ve dosya URL'leri sabit haritalama patlak daha soyut bir sisteme geçmek isteyeceksiniz.

BareBones: PHP5 için bir dosya, hayır-yapılandırma, MVC framework

FryPHP onu alır gibi yaklaşık olarak hafiftir.

Limonade de yararlı olabilir ... değil kesinlikle düzen.

I've been using Smarty for ages. It's mature, actively maintained, and widely supported.

Anyway, you'll find a whole range of template engines here: http://en.wikipedia.org/wiki/Template_engine_(web)

Eğer dil sütununu tıklatın, kolayca PHP için geçerli olduğunu görmek, ve motorları karşılaştırmak nasıl olacak.

Sadece başka bir kapsamda atmak için: CodeIgniter IMHO bir MVC yaklaşım kullanır, çok güzel, bu yüzden çıktı istersin görünümler gibi dosya ve küçük bir ayak izi var diyor. Ayrıca gemide bir template parser vardır.

Alkış,