Bir paketlenmiş ürün bir gün, kullanıcıların genişletmek ve özelleştirmek mümkün isteyeceksiniz biri olacak bir web uygulaması inşa varsayalım.
Bu sınıfları içeren PHP dosyalarından oluşan bir çekirdek kütüphane ile birlikte geliyor:
/library/
/library/frontend.class.php
/library/filesystem.class.php
/library/backend.class.php
Şimdi, kullanıcıların yama edemeyeceği bir clean core tutmak istediğinizi varsayalım. Yine de, kullanıcı ihtiyaç olması halinde her somun ve cıvata özelleştirmek mümkün olmak istiyorum.
Benim şu anki fikir sınıf örneği olduğunda, ilk yüklendiğinde çekirdek dahil, bir autoloading mekanizması oluşturmak için:
/library/frontend.class.php
o zaman, user dizinine geçer ve aynı adı dahil olup olmadığını görünüyor:
/user/library/frontend.class.php
biri varsa, o da içerir.
Tabii ki, kullanıcı dahil çekirdek tanımını uzanan bir sınıf tanımını içermelidir içerir.
Şimdi soru nasıl böyle bir sınıf örneğini olur, nedir? Sonuçta, ben her zaman bir tanımı yoktur emin olabilirsiniz:
class frontend_core
ama orada olduğundan emin olamaz
class frontend_user extends frontend_core
Ancak, sınıf veya özel bir uzantısı olup olmadığını bakılmaksızın, güvenmek mümkün olmak istiyorum, ve örneğini, one class name olur.
Nasıl bunu başarmak için akıllı bir yol, bir fikir ya da desen var mı?
Tabii ki, ben user sınıfının ilk ve daha sonra core sınıf arar ve bir başlatıldı nesneyi döndüren basit bir fabrika yardımcı işlevi yazabilirsiniz, ama ben gerçekten bu tutmak istiyorum Dediğim gibi, bu bir paketlenmiş ürün olacak çünkü, temiz ve mümkün olduğunca basit.
Ben mümkün olduğunca az kod kullanır ve az yeni bir işlevsellik sunar akıllı hile veya desen arıyorum.