Ita*_*vka 8 php yii yii-events
我想在onBeginRequest事件中运行一些代码.
我在哪里这样做?我假设我不想在核心库代码中添加它.
在Yii,我是一个完全的菜鸟
Joh*_*tan 15
如果你想使用onBeginRequest和onEndRequest,可以通过在配置文件中添加下一行来实现:
return array (
...
'onBeginRequest'=>array('Y', 'getStats'),
'onEndRequest'=>array('Y', 'writeStats'),
...
)
Run Code Online (Sandbox Code Playgroud)
或者你可以内联
Yii::app()->onBeginRequest= array('Y', 'getStats');
Yii::app()->onEndRequest= array('Y', 'writeStats');
Run Code Online (Sandbox Code Playgroud)
哪个Y是类名,getStats并且writeStats是此类的方法.现在想象你有一个Y像这样声明的类:
class Y {
public function getStats ($event) {
// Here you put all needed code to start stats collection
}
public function writeStats ($event) {
// Here you put all needed code to save collected stats
}
}
Run Code Online (Sandbox Code Playgroud)
所以在每个请求中,两个方法都会自动运行.当然你可以想"为什么不简单地重载onBeginRequest方法?" 但首先,事件允许您不扩展类来运行一些重复的代码,并且它们允许您执行在不同位置声明的不同类的不同方法.所以你可以添加
Yii::app()->onEndRequest= array('YClass', 'someMethod');
Run Code Online (Sandbox Code Playgroud)
在您的应用程序与以前的事件处理程序和沿任何其他部分,你会得到同时运行Y->writeStats,并YClass->someMethod请求处理后.这种行为允许您创建几乎任何复杂性的扩展组件,而无需更改源代码和Yii基类的扩展.
| 归档时间: |
|
| 查看次数: |
8385 次 |
| 最近记录: |