Bir ORM tamamlayacak PHP veri erişim tasarım desenleri

2 Cevap php

Şu anda PHP Doktrini ORM kullanarak Active Record desen bağlıdır bir site var. Ben genellikle bu yaklaşımın hayranıyım - çok basittir ve basit CRUD uygulamalar için yönetmek için iyi çalışır. Bu site büyüdükçe Ama, ben daha sağlam etki alanı işlevi benim ihtiyacı da büyüyeceğini düşünüyor. Ben veri tasarımı desen başka türlü bir ORM ile birlikte iyi çalışır merak ediyordum.

Benim temel sorun şu anda Doktrin süslü bir sorgulama dili olarak en iyi iş gibi görünüyor, bu yüzden benim modeller gibi yöntemler ile doludur:

function getBySomeClassfication($classification)
{
    return Doctrine_Query::create()
              ->select('stuff')
              ->from('ModelClass')
              ->where('something = ?', $classification)
              ->execute();
}

ya da ben direkt bir model sınıf erişmek istiyorsanız:

Doctrine::getTable('ModelClass')->findAll();

Bu benim etki alanı nesneleri yerine doğrudan Doktrini nesne sarmalayıcılarla çalışma sonunda gelir. Bütün bu soyutlamanın bir alt düzeyde bulunması gibi hissediyorum.

Ben sadece iyi yaklaşım ne olduğunu pek emin değilim. ORM tek tabloları sorgulama ve ilişkileri ile başa çıkmak için mükemmel bir tabaka gibi hissediyorum. Ama birden fazla model / tablolar üzerinde çalışmak etki alanı nesneleri oluştururken daha fazla esnekliğe sahip olmak istiyorum.

Ben Depo desen kullanarak kadar okumak, ama hala birkaç tereddütleri var ettik:

  1. Ben sadece orijinal sorunu kadar kabarcıklar soyutlama anlamsız bir katman yaratmak istemiyorum.

  2. Ben Active Record ORM kullanarak bütün mesele yeniden oluşturmak veya işe yaramaz hale istemiyorum.

Herhangi bir düşünce ve önerileriniz?

2 Cevap

Bazı noktada nesne sarma (Data Access Objects) ile çalışmak ve bir noktada aramalar (Doktrin-burada) özgü uygulama olacaktır gerekir. Özellikle aranızda koymak istiyorum kaç katmanlar mevcut mimariye bağlıdır, ama ben söyleyebilirim - mümkün olduğunca az. Eğer Doktrin çözmüyor buna sahip herhangi bir sorun var mı?

I sometimes don't see the point in having to deal with database specifics (e.g. one Domain Entity spreading over several tables) at all when using the ORM as a tool for (from scratch) Object Oriented Domain Model development. I recently answered a more Java specific question here, but maybe it helps you, too for the architecture idea.

Sen Zend Framework ORM implementation bir göz olabilir tanımlamak da mümkün olduğu (zaten değil varsa) relationships across multiple tables.

Umarım yardımı olur.