PHP eklentisi Mimarlık

3 Cevap php

PHP bir plug-in mimarisini uygulamak için nasıl bir araştırma yapmaya planlıyorum. Ben mümkün başvuruları için web'de arama denedim, ama ben burada sordum belki iyi bir referans benim arama daha hızlı ve daha uygun olacağını düşündüm.

Herkes burada web projeleri için plug-in mimarisi kullanarak çalıştı?

Thanks, Erwin

3 Cevap

Ben wordpress eklentileri yazdım ve onlar güveniyor sihirli "Değişken Fonksiyon isimleri" dir. Örneğin bu işlev çağrısı phpinfo () adı verilecek olan, geçerli php:

$func_name="phpinfo";
$func_name();

Bu uygulamanın geri kalanını değiştirmek zorunda kalmadan kendi fonksiyonları ile geçersiz kılma, onları olduğu gibi, geliştirici için "Hook" işlev çağrıları sağlar. Linux Kernel modülleri "çengel" hakkında tüm vardır, bu davranış olmadan işe yaramaz.

Ne yazık ki PHP değişken fonksiyon isimleri kaynaklarının çok tüketen bir iğrenç hack vardır. Bir isim alan tüm fonksiyonlar bir liste konur ve bu liste fonksiyon denir önce olsa aranmalıdır, bu O (log2 (n)) 'dir. Ayrıca kod hala + + geçerli C dönüşecek rağmen Değişken Fonksiyon isimleri HipHop düzgün hızlandırılmış olamaz unutmayın. Daha iyi bir yaklaşım (1) karmaşıklığı O olacağını Python olabilir, ancak PHP geliştirme ekibi HATES Bu fikir gibi yeniden ilan fonksiyonları olacaktır (Evet, bu özellik için sordunuz!) .

İyi şanslar!

Ne bu iki sınıf hakkında

  1. Eklentisi Handler/Loader
  2. Eklentisi

ve bazı kurallar vardır

  1. Eklentisi Handler/Loader is a singleton class and manages all child clases of Eklentisi Class.
  2. Any plugins should have to be inherited from Eklentisi Class.
  3. Eklentisi Class would have pre-defined properties and methods which can be overwritten by its child classes, so alternate method to hook system (but i am not sure of any major difference in results).

Örneğin Eklentisi sınıfı boş bir dizi varsayılan değeri ile url_routes bir özelliği vardır ki, çocuğun sınıf daha sonra üzerine yazmak ve bu dizkimlike herhangi gerekli adresler ekleyebilirsiniz.

Eklentisi Handler / Loader sonra çocuk sınıftan temel sistemi için bu url yolları katacak.