İyi Uygulama PHP MVC Soru

2 Cevap php

Ben CodeIgniter PHP ile bir takvim uygulaması oluşturma. Ana takvim sayfasında, My modeli şu anda her dizin geçerli ay bir gün olmak bir dizi oluşturur. O gün kullanıcı o gün olabilecek olayları içeren bir dizidir. Şimdi, ben bu yüzden modeli veritabanına erişmek ve tüm olaylar doldurun, ya da sadece takvim dizi oluşturmak gerekir ve TÜM modelinde olaylarda doldurabilirsiniz modele geçmek, sonra İLK denetleyicisi takvim dizi oluşturmak gerekir ?

$ Ay = array ((olay 1, olay2), 'gün2' => ... => array 'day1', 'boş', 'boş');

2 Cevap

Bu zor bir soru, ve ben herkesin aynı şekilde yapmak istiyorum emin değilim ... Ama burada ben dikkate alınması gerektiğini düşünüyorum ne:

  • If your Model's method is to be used from several part of your application (say, the controller that already calls it, a batch-programm, and a SOAP web-service interface), which may means being called from several Controller methods, the question is : what do you want the array to be like ?
    • Hep aynı şeyi içermesi gerekiyorsa ("full array"), her zaman, daha sonra, kopyala-yapıştır önlemek için, Model kodunuzu koymak gerekir
    • Sadece bir durumda "tam bir şey" içeriyorsa ihtiyacı varsa, o zaman, "özel kod" Controller olabilir - ya da başka bir model yöntemi, o özel durumda, Kontrolör olarak adlandırılan, ve çağrı olurdu veri almak için varolan bir.
    • Başka bir yol Controller ve Model arasında bir katman eklemek olacaktır ... Sonuçta, böyle kötü bir fikir olmayabilir ...
  • Dizi olarak kabul edilirse, bir "bütün" hakkında konuşuyor kod idam edildikten, o zaman, ben Modelin içine bu kodu koymak mantıklı varsayalım
  • Bu kod bazı İş-mantık kuralının bir parçası ise, bu model katmanında yerini alır; sadece sunumu ile ilgili ise diğer taraftan, onun yeri görünümünde olacaktır.
  • Lütfen Modeli yöntemi "getData" denir, yalnızca "gerçek" verileri, ve "boş" günler içeren bir içeren dizi dönmelidir; denir eğer diğer taraftan, "getEventsByDay", o bile boş olanlar, her gün için bir şey dönmek olması mantıklı
  • Size Model yöntemleri için tutarlı bir arayüze sahip denemelisiniz: verileri kaydetmek için bir dizi çeşit alırsa, bir yükler sizin DB veri dizisinin aynı tür dönmesi gerekir; Yani, $model->save($model->load()) çalışması gerekir gibi bir şey

Sonunda, "iyi cevap" var: ^ ^ "değişir"

Gerçekten ben sizin durumunuzda ne yapardım bilmiyorum; Ben bu tür uygulamanın geri kalanı bağlıdır varsayalım ... soru "benim Modeli için boş bir gün anlam ifade kavramı yok, ya da sadece sunum meselesi?" Olduğunu kendime sorardım

O "her iki yönde" çalışabilir yüzden muhtemelen tasarım istiyorum. : Modelin çıktısı muhtemelen çizgisinde bir dizi standart olmalıdır

array('2009-08-05' => array('event' => ..., ...), '2009-08-06' => array(...));

Yani sadece saf veri.

Varsayılan olarak geçerli ay tükürmek olabilir, ya da şimdi ve 1 ay arasında her şey. Bu varsayılan davranışı değiştirmek için olsa da bir argüman almalıdır. Tarih veya bir aralıktaki bir dizi çekmek ya.

Sizin örnekte ilk iki kayıtlar 'boş' neden ben bilmiyorum. MVC karşı gitmek yerine, bir takvim yaprağının üzerinde gösterildiği gibi dizi zaten bir ay temsil ediyorsa. Bu tür sunum konular View dikkate alınmalıdır.