Basit bir örnek veriyim. Diyelim ki bir shopping cart uygulamanız var. Değişik ödeme yöntemlerini destekleyecek bir plugin yapısı kurmak istiyorsunuz. Dizin bazlı yapmak için
plugins/payments/
diye bir dizin açarsınız. Uygulamanız bu dizin altındaki dizinleri tarayarak pluginleri arar. (
www.php.net/opendir www.php.net/readdir )
Örneğin:
plugins/payments/paypal
plugins/payments/authorize-net
plugins/payments/orbital
Plugin yapısı istediğiniz özelliklere göre değişik fonksiyonlara sahip olsun.
plugins/payments/paypal/processor.php
PHP:
function odeme_yap(fatura_no,data) {
/*
paypal odeme islemleri
....
*/
if ($success) {
return TRUE;
}
else {
return FALSE;
}
}
Bu yaptığınız işlemlerden sonra başarılı ise dogru, başarısız ise yanlış değeri gönderiyorsunuz.
Sitenin ana yapısında hangi modül seçiliyse onun plugin dosyasını include edersin.
PHP:
include('plugins/payments/'.$mymodule.'/processor.php');
/* $mymodule bir şekilde db de veya dosyada kayıtlı */
if (odeme_yap('102',$array)) {
echo 'Odeme basarili';
}
else {
echo 'Odeme basarisiz';
}
Böylece isteyen plugins/payments altına bir dizin yaratır. Kendi odeme_yap() fonksiyonunu olusturur. Scriptin tek yaptığı seçilen modüle göre bu fonksiyonu çağırıp, TRUE/FALSE değerini kontrol etmektir.
Bu ödeme sistemi için bir örnekti. Diğer bölümlere de kolaylıkla eklenebilir, ancak bu tarz bir yapıyı oluşturabilmek için uygulamanın tüm bölümlerinin modüler bölümlere ayrılması gerekli. Include edilecek plugin uygulamanın detaylarına erişebilmeli. En büyük başlangıç template sistemi kurup html ile php yi birbirinden ayırmak olabilir.