Aşağıdaki şekilde eklentileri dinamik yükleme uygulanmaktadır:
function processPlugin( $plgFile, $db ) {
require_once( $plgFile );
$plgin = new PlginImpl();
$plgin->setDb($db);
$ret = $plgin->process();
return $ret;
}
Her eklenti çalışıyor PlginImpl
adında bir sınıfı tanımlar. Ama process()
dönüş değeri içinde içinde belirtilen başka eklentileri aramak mümkün olmalıdır. Yukarıda belirtilen aynı yöntemi çağırmak, ancak başarısız olur:
Fatal error: Cannot redeclare class PlginImpl in ..
Her eklenti bir sınıf olduğuna dikkat edin, yani:
class PlginImpl extends Plugin implements PluginInterface
Plugin
bazı kullanışlı işlevler sunarken PluginInterface
tanımlar yani process()
.
Ben tüm eklentileri PlginImpl adlandırılmış olması dolayısıyla benim soru, soruna neden olduğunu varsayalım: require_once
ile yükledikten sonra (PlginImpl
) bir sınıf boşaltmak için bir yol var? Ya da ben takip etmelidir tamamen farklı bir yaklaşım var mı?
EDIT I tried without succeeding the following things:
- unset
$plgin
sonra,process()
- bunun içinde
processPlugin()
, neprocess
yöntemi içinde de çalışmıyor -__destruct()
çağrı
Çok, çok teşekkürler!