PHP gerçek bir nesne yönelimli bir çerçeve oluşturma, öneri istedi

4 Cevap php

Ancak arabirimleri gibi Java ve müthiş özellikleri öğrendikten sonra, CodeIgniter framework kullanarak oldum, Soyut sınıflar, paketler, ve PHP 5 de bu özelliklerin çoğunu destekler, ben [(0)] mezun ve {inşa etmeye hazırım (ad alanları dahil) bütün bu özellikleri kullanır, bu yüzden çok daha şık tasarımlar oluşturabilirsiniz PHP} OO çerçeve.

Ne Düşünüyorum sahip olduğunu doğrusu onun CodeIgniter, örneğin yapılan gibi tek bir $this-> nesne paylaşımı sisteminde her şey daha:

$this->load->model('box');
$this->box->something();

Sen yapacağını Box modelini yüklemek ve something() yöntemi çağırmak için aşağıdaki.

$box = new Framework\Models\Box();
$box->something();

Ya da, aşağıdaki

abstract class BaseController
{
   public function getModel($name)
   {
      $model = new Framework\Models\$model(); //Is this valid code?
      return $model;
   }
}

class MyController extends BaseController
{
    public function index()
    {
        $box = $this->getModel('box');
        $box->something();
   }
}

Ben ne olmalıdır ad alanları gibi ben çerçeve için ihtiyaçları olan minimum sistem sınıfları olarak bu bina için herhangi bir öneri / işaretçiler, veya herhangi bir diğer özellikleri var mı?

4 Cevap

I Kohana bakmak olacaktır. Bu CodeIgnitor çıktı ve yükleme Modelleri vb Eğer teklif sadece şekilde yapılır.

(Ben bu vurguladık) sorunuza doğrudan ilişkili birçoğu onların temel özelliklerini, check out:

Nasıl Kohana Farklı nedir?

Kohana birçok ortak tasarım desenleri ve kavramları kalıncaya rağmen, Kohana öne yapmak bazı şeyler vardır:

  1. Toplum, değil şirket, tahrik. Kohana geliştirme, hızlı, güçlü çözümler için bir çerçeve gerekir adanmış insanların bir ekip tarafından tahrik edilir.
  2. Strict PHP 5 OOP. Offers many benefits: visibility protection, automatic class loading, overloading, interfaces, abstracts, and singletons.
  3. Son derece hafif. Kohana PECL uzantıları veya PEAR arşivlerine hiçbir bağımlılıkları vardır. Büyük, monolitik kütüphaneler optimize edilmiş çözümler lehine kaçınılmalıdır.
  4. POST, COOKIE ve OTURUM diziler beklendiği gibi tüm çalışmaları, GET. Kohana küresel verilere erişiminizi sınırlayabilir, ancak filtreleme ve XSS koruması sağlamaz.
  5. True auto-loading of classes. True on-demand loading of classes, as they are requested in your application.
  6. No namespace conflicts. All classes are suffixed to allow similar names between components, for a more coherent API.
  7. Basamaklı kaynakları benzersiz yayılabilirliğini sunuyoruz. Kohana hemen her parçası çekirdek sistem dosyaları düzenleme olmadan aşırı veya uzatılabilir. Modüller şeffaf, çoklu dosya eklentileri uygulamasına eklenecek izin verir.
  8. Kütüphane sürücüleri ve API tutarlılık. Kütüphaneler şeffaf farklı dış API'leri işlemek için farklı "sürücüler" kullanabilirsiniz. Örneğin, birden çok oturum depolama seçenekleri (veritabanı, çerez, ve yerli) mevcuttur, ancak aynı arayüz hepsi için kullanılır. Bu, tutarlı ve şeffaf bir API tutar, yeni sürücüler mevcut kütüphaneler için geliştirilmiş sağlar.
  9. Güçlü olay işleyicisi. Observer-style olay işleyicileri özelleştirme potansiyelinin aşırı seviyeleri için izin verir.
  10. Hızlı geliştirme çevrimi. Kullanıcı hataları ve isteklerine daha hızlı yanıt olarak hızlı bir gelişme sonuçları.

Ben fark ettik bir şey bir çerçeve genellikle belirli bir amaç için inşa edilmiş olmasıdır. (CodeIgniter gibi) genel çerçeveler küçük siteler ve yukarı şeyler almak ve hızlı çalışan için iyidir. Eğer kendi yapı genel çerçevenin dışında kalan belirli şeyler var, ancak bir kez bir gerçeklik haline gelmez.

I-cekti önermek tek şey tutarlı olmaktır. Bu acımasız tutarlıdır. Eğer CamelCase şeyler adlandırmak için karar verirseniz, o sapma yok. Eğer yöntemleri yani adlandırma NounVerb kuralını kullanmaya karar verirseniz veya spaceJump o zaman daha iyi 'sesler' bile jumpSpace geçmek gerekmez.

Parametreleri kabul ve bu konuda tutarlı olacak nasıl seçin. Sadece parametreleri veya parametrelerin ilişkilendirilebilir diziler kabul edecek? Seçin ve sopa ile.

Ben de fazla mühendis bir şey yazdım olmaz önce. Eğer refactor gerekir önce tutarlılık şey oldukça kadar götürecektir ... ama ben de bunu yapmak için korkuyor olmaz. (Bir birim testi veya iki bu korkuları hafifletmek gerekir).

Evet, sürece tutarlı konum gibi şeyler yapmak için hiçbir doğru veya yanlış yolu genellikle var. Ben bahsetti mi ...

Be Consistent!

Deneyim Bir çok teknik bir çerçeve (suç) oluşturmak için gerekli ve CMS / temel nesneleri (oturum yönetimi, ORM, vb) framworks / kütüphaneler 1'000 zaten vardır edilir.

Bunun yerine (yine hiçbir suç) değerli zamanınızı israf, daha var:

  1. Değerlendirmek ve daha iyi (bazı gerçekten iyi bir OO mimarisi var) sizin ihtiyaçlarınıza uygun bir çerçeve seçin.
  2. Bilgi bu iyi bir çerçeve kullanarak olacaktır.
  3. Lütfen own OO business/application çerçeve oluşturmak. (Eğer, öğrenmek farklılaştırmak ve değer yaratmak yerdir).

Sen kendi inşa ama neden mevcut çerçeveler ile birlikte büyük kütüphanelerinden yararlanmak değil ve gerekirse onların işlevlerini genişletebilirsiniz.

Neden Zend framework bakmak yok.

Başlamak için oldukça hızlı olduğunu ve standart olarak yararlı kütüphane ve sınıfları içeriyor. Lütfen sadece OOP ile daha fazla deneyim kazanmak isteyen eğer kişisel projeler için iyi.

http://framework.zend.com/