Bunun için başta proxy pattern olmak üzere çeşitli design pattern'lar uygulanabilir. Daha basit bir uygulama şekli olarak; otomatik çağrılmasını istediğin metodların adına prefix ekleyip non-public olarak tanımladıktan sonra __call magic metodu üzerinden çağrılmalarını sağlayabilirsin.
class MyClass
{
public function __call($methodName, $args)
{
$methodName = '_' . $methodName;
if (is_callable(array($this, $methodName))) {
$this->_beforeCall();
call_user_func_array(array($this, $methodName), $args);
}
}
private function _beforeCall()
{
echo "Called _beforeCall\n";
}
private function _method1()
{
echo "Called method1\n";
}
private function _method2()
{
echo "Called method2\n";
}
}
$obj = new MyClass();
$obj->method1();
$obj->method2();
Ayrıca bkz: http://en.wikipedia.org/wiki/Proxy_pattern
Let`s make this world a better place to live !
|