Nasıl MVC modelleri benim PHP app bölmek gerekir?

5 Cevap php

Ben basit bir MVC ilkesine dayalı bir PHP sitesi var. Ben şu anda veritabanından veri almak için birçok fonksiyonları ile bir model dosyası var. Ancak, bu yüzden ayrı model bölmek istiyorum şimdi biraz monolitik oluyor. Soru - Bunu yapmanın en iyi yolu nedir?

Her tablo için bir sınıf oluşturmak için iyi bir fikir mi, bu yüzden bir nesne veya nesneler dizisi (diyelim ki, makalelerin bir listesini) dönebilirsiniz? Yoksa anında nesneler / diziler oluşturmak kolaydır?

5 Cevap

Her tablo için bir Model yaratacak. Monolitik bir tablo şimdi bildiğiniz gibi 6 ay yolda korumak için bir kabus.

as far as valya's example: i would create a Users model and a Marriages model with all their usual insert/edit/delete/get functions on top of customized functions like isMarried() where it calls the Marriages model. ie

class UserModel {
    public function isMarried($user_id) {
    	return $marriages->findById($user_id);
    }
}

Eğer basit tutmak için denemek gitmeye karar hangisi yolu. basit, uzun vadede akıllı daha iyidir.

Duruma göre değişir :)

Ben o (değil her tablo için) her nesne için bir sınıf oluşturmak için iyi bir fikir olduğunu düşünüyorum. Örneğin, tablo varsa:

Users(uid, name, ...)
Marriages(h_uid, w_uid)

Bu gibi bazı yöntemlerle sadece kullanıcı sınıfı oluşturmak için serin olacak -> isMarried ()

Sen Doctrine gibi bir ORM kullanabilirsiniz.

PHP için, ben veri kullanım ve erişim desenleri dayalı sınıfları oluşturmak olacaktır. Olasılıkla her vuruşta kullanılan fonksiyonların bir "çekirdek" kümesini içeren bir sınıf var. Sonra gerektiğinde yüklemek istiyorsunuz app her "bölüm" için bir sınıf var.

Bu "doğru" ya da en iyi nesne yönelimli yaklaşım değil, ama aşağı yükü tutar. Her nesne için bir sınıf olan büyük ve temiz olabilir, ama PHP her vuruşta sıfırdan her şeyi yüklemek ve oluşturmak için vardır olacaktır. Yüklenir ve nesneler oluşturulabilir gereken daha fazla dosya, yavaş PHP alır.

Sen sadece birisi evli olup olmadığını öğrenmek için bir Ajax çağrısı yanıt vermek için bir düzine farklı dosyalara erişmek gerekmez.

Ben geri adım ve bir saniye için ayrı veritabanından uygulama bakmak istiyorum. Veritabanı dahil hiç olsaydı, uygulama neye benzer? Sınıflar adı ne olurdu? Eğer nesnelerin ne tür olurdu? Ne yapardınız? Uygulama tasarımı ve daha sonra kendi veri kalıcı gerektiğini nasıl karar.

Ben etrafında çevirmek ve masa başı sınıfının söyleyebilirim ama ne ben, bence, doğru sürüyorum, daha yukarıda belirtilen sınıf başına tablonun tasarım gibi bir şeydir. Sistem tasarımı, daha sonra DB verilerinizi temsil edecek en iyi şekilde anlamaya. Doktrin bu iş için iyi bir sistem, ama siz de, daha fazla manuel veritabanı adımlarla gayet yapabilirsiniz.

Ve ilgili yükü gibi, gerçekten her isteği örneğinin olacağını kaç farklı sınıflar bağlıdır. Evet, gerçekten tüm nesneleri (ya da-olmalıdır-ayrı ayrı-nesnelerin bir demet hodge-podges olduğunu dönüş nesneleri) dönüş yok jenerik "fetcher" sınıfları kullanarak havai kurtarabilir, ama sonra argüman olabilir hiç bir türlü sınıflarını kullanarak değil yoluyla yapılacaktır. Nesne yönelimli herhangi bir programlama veya fonksiyon kütüphaneleri, ya da dahil etmek zorunda başka bir şey kullanmak her ekstra yükü kesinlikle var. Ancak yapılan havai katlanılabilir olduğu için biz tek dosya PHP sitelerini yapmak zorunda değilsiniz nedeni, ve çok daha katlanılabilir başka bir yol gidiyor tarafından yapılan geliştirici yükü fazla.