En iyi uygulamalar / bilgi: a PHP4 ORM Yazma

3 Cevap php

(Temelde, kötü yönetim kararlarına bölünebilir hepsi) nedenlerle bir dizi için biz daha büyük olasılıkla bir kaç yıl boyunca PHP4 desteklemek gerekir, yani PHP5'ta geçmek veremiyoruz.

(Web uygulamaları bir sürü gibi) bizim uygulamaları bir çok övmek CRUD uygulamalar vardır, ve ben üzerinde biraz zaman harcamak arada ev projesini almak istiyorum çünkü, ben şu vea olacak bir küçük ORM gibi sınıf yazıyorum yana En temel sorguları için bir sarıcı olarak hizmet o PHP4 desteklemek zorunda olduğundan, PDO söz konusu değildir (insert, update,. diğerleri arasında, silme, değiştirme), bu yüzden geri düşmek gerekir gibi dile özgü fonksiyonlar mysql_query. Biz sürümlerin variery (Interbase sürümleri 4 ve üzeri, Firebird, MySQL), benim ORM / Sarıcı sınıf (emin değil ne onu aramak için), büyük büyümeye bağlı olarak, birkaç farklı sistemleri kullanılarak Çünkü.

Bu sorunu çözmek için, ben iki olası çözümler 'düşündüm:

  • Kullanılan dil / RDBMS'yi tanımlayan bir $database_system değişkeni dayalı işlevleri içinde switch ifadeleri ile, bir büyük sınıf yazmak
  • Bir temel sınıf yazmak ve (özellikler aralarında pek bir farklılık varsa muhtemelen sürümü başına) RDBMS başına bir türetilmiş sınıf yazmak.

Şu vea ikinci seçenek doğru eğilerek değilim; benim görüşüme göre, bu desteklenen listeye yeni bir RDBMS'yi ekleyerek, özellikle bakım kolaylaştırır. Öte yvean, PHP fonksiyonları kendi ayarlanmıştır kullanarak her RDBMS ile, ben bir temel sınıfından orada olacağını ne kadar emin değilim. Bu akılda tutulması sınıf sonunda bu (eğer destekleniyorsa, ve muhtemelen işlemekle) kerede sorguları bir bütün liste, kuyruk yürütme gibi özellikleri destekleyecek.

Bu durum göz önüne alındığında, hangi yaklaşımın iyi olurdu? A veya B, ya da ben henüz dikkate almadı C muhtemelen var? Mevcut sınıfların bazı örnekler ne yazık ki ben geldim çoğu ORM adlı (PHP5'ta sadece) PDO class güveniyor, mükemmel olurdu.

3 Cevap

Kesinlikle 2 seçeneği ile gitmek. Sizin OO yaklaşımı büyük switch deyimi üstündür. Sizin temel sınıf size sadece ortak yöntemler miras daha verecektir. Bu size diğer bazı veritabanı sebat stratejisi (PHP5/PDO yönetimi, akıllanır?) Göç ettiklerinde, daha sonra bir adaptör olarak kullanılabilir tutarlı bir arayüz sağlar. Hatta yakından gerekirse PDO bile Homegrown sebat katman için bir drop-in yerine olabilir noktaya PDO sonra arayüzü modeli olacaktır. Onlar zaten PDO ile deneyimi varsa Ayrıca, kalıcılık katmanı öğrenme yeni proje geliştiriciler için öğrenme eğrisi düşük olacaktır.

Ben yeni yazılım geliştirme için üs olarak kesinlikle desteklenmeyen yazılımı kullanmak için bir yönetim kararı anlayamıyorum. Bir yönetici için en azından paralel olarak PHP 5 yükleme maliyetlerini sıfıra yakın vardır. Eğer var - PHP 4 tek sonucu yüksek geliştirme maliyetleri (PHP 4 için daha fazla PHP 5 sınıflar vardır, tüm araçları bu gün çoğunlukla kaybolur PHP 5 ve PHP 4 son hatırlatmalar bağlıdır) ve PHP 5 ile üretim ucuzdur vardır PHP zamanında kendiniz hataları düzeltmek için, PHP 5.3 yolu daha az sistem kaynaklarını kullanır, ....)

Ama gerçekten bu şekilde gitmek istiyorum: Pear::MDB2 neye ihtiyacınız var ve uyumlu ve çok kararlı PHP 4 olduğunu gerekir.

Ama doğrusu iş değiştirmek istiyorum ... gibi kararlar genellikle sadece aptal onlar değildir.

Birisi simular (umarım yoktur) ama eğer bir şey arıyor - Eğer xPDO bir göz atmalısınız.

It is an alternative for pdo working on php4. Never tried to use it - but I think it should work ... http://www.xpdo.org/