2010-08-31 21 views
8

Bir sürü güzel OOP kodum var ama işlevler bu devasa büyük SQL sorgularına sahip. 2010 yılında, hala sorgularımıza satır içi yazmamız mı gerekiyor yoksa PHP'de SQL sorguları için MVC gibi bir soyutlama var mı?Kodda SQL sorguları düzenlemek için en iyi yöntem nedir?

Analizleriniz için teşekkür ederiz.

Düzenleme: Muhtemelen burada bundan bahsetmeliydim. Ama profesyonel bir PHP mühendisi olarak, ne korkunç yapılan ORMs rastlamak ettik ve (daha da kötüsü!) Korkunç kesinlikle gerçekleştirmek doğru programlanmış ORMs (özellikle. Üzerine çoğa-çok ve çok sayıda sorgu katılmak) ne sıklıkta inanmazsınız. Kohana gibi birkaç basit ORM hariç, ORM'lere karşı çok olumsuz önyargılıyım.

Aradığım şey genel bir Dinamik SQL tasarım kalıbıydı.

cevap

8

sen saklı prosedürlerde Sorgularınızı (select, insert, güncelleme, silme, ...) yazmak ve yalnızca php kodu içinde yerine php dosyalarında sorguları yazma bu depolanmış yordamlar çağırabilir.

mysql stored procedure programming

+2

Uygulamadan +1 veri erişimi saklanan süreçler üzerinden olmalıdır – CaffGeek

1

Doctrine ORM'u kullanarak bakabilirsiniz. İstediğin şeyin bu olup olmadığından emin değilim.

1

Doctrine gibi bir ORM kullanmak iyi bir yoldur.

3

PHP hakkında bilmiyorum, ancak bir ORM kullanabilirsiniz. Vikipedi, ORM yazılımının bir list numarasına sahiptir.

1

Çoğunlukla Joomla çalışmak ve sql nesil için kendi OO sarıcı geliştirdi:

mysql saklanan prosedürleri öğrenme için iyi bir kaynak bu kitap. Ancak joomla olmayan proje üzerinde çalışırken, her zaman db2php kullanıyorum, bu Netbeans IDE eklentisidir. Karmaşık sorguları bile yürütmeyi kolaylaştırır.

Modellerin oluşturulması, birkaç tıklamayı alır ve her şey tamamlanır. Bu müthiş

kaynak projesi açılır. Buna bir bak. Ben PHPs OOP kullanmaktan zevk

http://code.google.com/p/db2php/

1

statik DB sınıfı ve saklanan prosedürleri (SP) kullanımı ile yaklaşır.

yolu tüm MySQL kod sunucusunda saklanır ve karmaşık sorgu ile birlikte izni kontrolleri uygulayabilirsiniz That - SP içindeki hazırlanmış deyimleri kullanarak. Postgres ile bir fonksiyon kullanırdı.

Bu, SP çağrıları oluşturmak için genelleştirilmiş kod içeren temiz bir veritabanı sınıfı sağlar. PHP geliştiricisi onun kod konsantre ve onun ıde phpdoc tüm olanaklarını sunmaktadır, böylece En iyi ihtimalle komisyoncu yöntemleri, parametre olarak nesneleri kabul ediyorsunuz (otomatik tamamlama!).

örn.

$x = new SEARCH_ITEM(); 
$x->name = $blab; 
$resObj = $this->db->search_item($x); 

Ayrıca bu, işleri projenize API olarak uygulamanızı kolaylaştırır.

SP'leri yazmak, alışkın değilseniz oldukça fazladır.

Etrafında iyi bir yazılım var mı? Bilmediğim iyi soyutlama paketleri var sanırım ... Bu anlamda bir soyutlama katmanı olarak PDO veya Adodb gibi şeyler görmüyorum. Creole veya Propel, düşündüğümden daha fazlasıdır. Sorguların kodun bir parçası olmadığı ve PDO gibi soyutlama katmanları kullanılarak oluşturulduğu bir şey. Creole ve propel denemedim.

İlgili konular