PHP: run function when a specific class method is run
Bir sınıf yöntemi mevcut sınıfını değiştirmeden çalıştırdığınızda ne istediğiniz bazı ek fonksiyonları çalıştırmak.
nasıl?
With a decorator:
class MyClassDecorator
{
protected $decoratedInstance;
public function __construct($decoratedInstance)
{
$this->decoratedInstance = $decoratedInstance;
}
public function methodNameInOriginalClass()
{
$this->decoratedInstance->methodIWantToRunBefore();
$this->decoratedInstance->methodNameInOriginalClass();
$this->decoratedInstance->methodIWantToRunAfter();
}
public function __call($method, $args)
{
if (method_exists($this->decoratedInstance, $method)) {
return call_user_func_array(
array($this->decoratedInstance, $method),
$args
);
}
}
}
Yukarıdaki aramak istediğiniz yöntemler olduğunu varsayar public
$decoratedInstance
üzerine.
Bu mümkün değil, bunu elde etmek işlevini değiştirmek zorunda kalacak. Ama ihtiyacı olabilecek bir observer pattern (zend adamlar da, observer pattern on zend.com tarif)
Ne yapmaya çalışıyorsun denir Aspect Oriented Programming.
Eğer uzantıları kullanabilirsiniz rağmen şu anda PHP, kutunun o dışarı için destek değil. http://sebastian-bergmann.de/archives/573-Current-State-of-AOP-for-PHP.html: İşte bazı seçenekler açıklıyor post
Bu kullanarak mutlaka iyi bir fikir değil.