PHP çerçeveler görünüm uygulamalar uygun buluyor musunuz?

2 Cevap php

Tüm popüler PHP çerçeveler bugün saf PHP şablonlar ve yardımcıları sürü dayalı kendi bakış katman uygulamasını kullanabilirsiniz. Ben bazıları denenmiş ve her zaman bu yaklaşım oldukça basit şeyler için büyük komplikasyonları tanıtıldı olduğunu tespit ettik. Örneğin, Zend Framework formlar ve numaralandırılmasında bu öğelerin görünümünü özelleştirmek için kendi çözümlerini kullanın. Yardımcıları da oldukça yavaş çözümler sunan, döngüler icat yeniden ve bütün görünümü katman, bence bir parçası olarak yok, ancak işlevsellik birçok script diğer bölgelerine temsilci. Aynı yapılandırma sorunları Symfony'de ve yönetici jeneratör oluştu ve Kohana de benim tüm formları üzerinde aynı kodu çoğaltmak zorunda kaldı. PHP gerçekten görünüm katmanı için iyi bir seçim mi? Ayrıca bu uygulamalar, rahatsız edici ya da belki, neden bütün bu sorunların onlar iyi ve akıllı bir şablon motoru, örneğin yerini olamaz rağmen (ben Smarty :) kastetmiyorum) buluyor musunuz?

2 Cevap

Şimdi PHP gibi ama sonuçta, her şeyden önce, bir çiftleşmiş bir dil değil, genel amaçlı bir programlama dili nor an object-oriented language olduğunu. Onunla mücadele etmeyin. Onu kucaklama.

Ben Symfony, CakePHP ve Zend gibi birkaç farklı MVC çerçeveler baktım ve ben örnekler geçmiş almak zor bir zaman var. Genellikle onlar "bu 17 dosya ile bir 'Merhaba dünya" programı yapabilirsiniz! "Vardır Huh?!?!

Orada bunun uğruna ve bir sorun varsa, önce bir sorunu çözmek için karmaşıklığı gibi bir şey ve ben bu ağır (onlar are ağır) çerçeveler gerçekten değer katan ikna henüz değilim.

Ben 'no framework' framework bir fan daha var. Bu gerçekten 'kendi rulo' ama ben leanest, temiz sonuç yol açtığını düşünüyorum.

Ben Smarty ile ilgili benzer hissediyorum. Üzerinde bir sürü insan SO Smarty büyük taraftar ama sen ... çiftleşmiş diline bir çiftleşmiş dil eklemek istiyorum neden bana mantıklı gelmedi.

Sonuçta ben PHP script bu tür yazı sonunda çoğu zaman

<?
require 'config.h'; // set up constants, DB connections and so on
page_header('My Page'); // page header, site menu and so on
deny_unregistered(); // security
if (/* user submitted page */) {
  $valid = validate_form(/* validation rules */);
  if ($valid === true) {
    // do db changes
    // redirect user ie POST+REDIRECT+GET
  } else {
    // output error messages
  }
}
?>
// display page
<? page_footer(); ?>

Yardımcı fonksiyonlar (örneğin sayfalama bağlantılar) akıllıca kullanımı ile, yukarıdaki inanılmaz okunması ve hata ayıklama kolaydır. Ben ayrıca çok bu model için tercih:

URL:? / Index.php inc = filan

index.php:

<?
require "$inc.php"; // hopefully you sanitize this but so many don't
?>

Ben bu çirkin buluyorum, hata eğilimli ve hatta tehlikeli. Her sayfa bir PHP komut dosyası olduğu (bakış, bir menü noktasına gelen) site yapısını yansıtan PHP dosyalarının bir hiyerarşi var. Ortak davranış varsa, her ikisi de (genellikle kötü organizasyon için bir hack olarak kullanıldığı, not require_once ) bunu gerektirir.

Basit, kolay, anlaşılır, basit.

Bu herhangi bir ihtiyaç gerçekten hiç yoktur önce programcılar bir çok karışımı bir çerçeve içine atmak olacak gibi görünüyor. Bugün yapılan her karar daha sonra bu yüzden mümkün olduğunca uzun süre bu gibi kararları ertelemeye değiştirmek zorlaşır biridir: Ben bu oldukça tembel bir uygulama ve büyük bir maliyet olduğunu düşünüyorum. Daha sonra bir şey tanıtan, şimdi bir şey tanıtan gerçekten ne istediğinizi yapmaz bulmak ve daha sonra bunu değiştirmek daha kolaydır.

Orada birkaç diğer çiftleşmiş motorları vardır. Ancak her zaman en uygun olacak şekilde saf php buldum. Onunla sadece daha rahatım.

i ZF görünümünde yardımcıları hakkında sevmediğimiz şey genellikle temizleyici daha benim kod fazla şişirilmiş yapılmış olmasıdır. Ben özellikle $ this-> url () yardımcı bahsediyorum :)