我对正在为我的自定义框架开发的事件系统有一个想法。
想象一个像这样的伪函数。
class Test
{
public function hi()
{
Event::add(__FUNCTION__ . 'is about to run.');
return "hi";
}
}
想象一下,您需要为更多功能做同样的事情。(也许您想记录在运行时运行的函数并希望将它们记录在单独的文件中。)
除了手动将事件添加到函数中,我们可以做这样的事情吗?
class Test
{
public function hi()
{
return "hi";
}
}
// events.php (It's a pseudo code so may not work.)
// Imagine extend's purpose is to inject codes into target function
Event::bind('on', $className, $methodName, function() use ($className, $methodName)
{
return $className->$methodName->extend('before', Event::add(__FUNCTION__ . 'is about to run.'));
});
这个想法是注入hi()
内部的函数,并从外部Test class
注入我们在函数中传递的任何内容extend
。'before'
意味着注入必须在目标函数的第一行。
最后,事件和事件绑定完全从函数中抽象出来。我希望能够在不改变功能的情况下绑定自定义的东西。
我有一种感觉,我们可以通过修改eval()
或玩弄call_user_func()
. 不过,我不确定。使用eval()
听起来已经很糟糕了。
我的问题是;
- 有可能与PHP有关吗?
- 它是否在 OOP/OOP 原则中有名称,以便我可以进一步阅读?
- 它有任何意义还是一个坏主意?