Php Yii init单例应用程序组件onBeginRequest
我正在开发一个组件,它将从URL获取一个GET变量,将其存储在一个可访问的变量中,并将其放在cookie中。如果未设置GET变量,则会将cookie值加载到可访问变量中:Php Yii init单例应用程序组件onBeginRequest,php,yii,Php,Yii,我正在开发一个组件,它将从URL获取一个GET变量,将其存储在一个可访问的变量中,并将其放在cookie中。如果未设置GET变量,则会将cookie值加载到可访问变量中: MyComponent extends ApplicationComponent { protected $_var = null; public init(){ // if isset($_GET['var']), set value to $_var and cookie; // elseif
MyComponent extends ApplicationComponent {
protected $_var = null;
public init(){
// if isset($_GET['var']), set value to $_var and cookie;
// elseif cookie set value to $_var;
// else nothing;
}
public getVar(){
return $_var;
}
}
我总是希望组件有一个实例,并且希望在每个前端请求上运行init(即使它没有被明确引用)
我怎么把它挂起来?我知道onBeginRequest,但这不是只允许静态方法吗?
我可以破解它,并在一个单独的方法中设置一个应用程序组件,但这并不合适。。如果可能的话,我希望它可以跨站点移植并在我的配置中设置。您可以将它添加到配置的
预加载部分:
protected/config/main.php
这将在每个前端请求中自动实例化组件。请参阅Yii最终指南的附录。Perfect!谢谢,我以为会有一个标准的方法。我承认,我确实发现Yii文档有时很难导航。不客气!是的,我同意。不过他们有很好的类参考文档。
return array(
// some parameters
'preload' => array( 'myComponent' ),
'components' => array(
'myComponent' => array(
'class' => 'path.to.your.component.MyComponent'
),
),
);