MVC perspektif içinde, dosya sisteminde çok temel kişiler nereye gitmeli?

3 Cevap php

Ben denetleyicileri ve modelleri için veri konteyner olarak hareket basit sınıfların ağırlıklı konuşuyorum. Ben denetleyicisi için meyve ve sebze ekleyerek önemser bir sepet modeli var söylüyorlar. Ancak, sayfa yükleme sırasında, yani değerler arasındaki DB veya oturumu erişilen ve tekrar yazılır, ben meyve ve sebze ile ilgili veri depolamak için sınıfları oluşturmak için ihtiyacı duyuyorum. Her (sonunda genişletmek ama şimdi $fruits->add('apple',1) gibi onun şeyler olabilir) Miktarını veya etajer içeren ve görevlerin en temel gerçekleştirebilirsiniz.

Nerede böyle sınıflar ideal dosya sistemi hiyerarşisi içinde gitmeli? Onlar başka bir şey için gerekli olmayacak gibi yakından, modele bağlı olmalı .. Ya da başka bir şey haline refractured edilmelidir?

3 Cevap

Sizin $ meyveler yanı sıra teknik bir modeldir. > Kap (kayıt) nesnesi aracılığıyla eklemek - Ben edememek katılıyorum eğer ben bilmiyorum. Bu dizinde ya da belki bir alt dizinde gidebilirsiniz ama yine modellerdir. Sen gibi bir şey yapabilirsiniz:

models/
controllers/
views/
    <object-name>/
lib/

lib baz modeli / denetleyici / görünüm sınıflar da dahil olmak üzere diğer kütüphaneler ve genel sınıfları tutabilir. Onlar da bunu nasıl görmek için popüler MVC paketleri kontrol.

Ben yerine modelin içine bahsedilen mantığı koyarak veritabanı mantığını kapsüller bir veri eşleştiricisindeki bahsediyoruz düşünüyorum. Bu şekilde model içinde sadece kalıcılık mantık eşleyiciye için kaplinidir.

http://martinfowler.com/eaaCatalog/dataMapper.html

Bu mappers modeller ikamet aynı dizinde Mapper adında bir alt koymak olabilir:

Model/
  Fruit.php
  Mapper/
    Fruit.php

Service layer

Eğer daha fazla esneklik ihtiyacı iseniz bazı durumlarda, bu yüzden sadece mapper modeli hakkında bilen, ya da muhtemelen bu bile o kadar mappers sizin modelleri ayrılabilmesi hangi ile bir hizmeti katmanı tanıtmak için tavsiye olabilir sadece hizmet katman modeli ve mapper birbirine nasıl bilir:

http://martinfowler.com/eaaCatalog/serviceLayer.html

(Don't be startled about the talk about "Zend Framework" with the following link since it really makes a lot of good, generic points about architecture and mostly just rants about what ZendFW got wrong)

http://www.angryobjects.com/2009/03/30/writing-robust-php-backends-with-zend-framework/

Ben model olarak aynı dizin düzeyinde dosya sistemi bu servis katmanları koymak istiyorum:

Model/
  Fruit.php
Service/
  Fruit.php

ORM Framework

Doktrin gibi zaten varolan bir nesne ilişkisel eşleyicisini kullanma ihtimali de var.

http://www.doctrine-project.org/

Temelde en azından MVC nokta, modellerindeki bütün veritabanı mantığı tutmalı.

(? - Sanırım / yardımcı / fruits.php Helper_Fruits) gerçekten modellere bağlı bu yöntemleri istemiyorsanız, size yardımcı sınıflar oluşturmak gerekir.