想询问一个关于组件自动加载的问题

我现在自己写了一个CSmarty类的init()作为对smarty类的初始化。

并在main.php中设置了这个smarty的组件

'components'=>array(

'smarty'=>array(

              'class'=>'libs.extensions.smarty.CSmarty',

              ),…

现在我在action中可以这样调用$smaty=Yii::app()->smarty;

请问它是调用了自动加载的方法吗?如果有自动加载的话是website全局性的加载还是一个controller内部的加载?麻烦指教,多谢!

我现在觉得每一次都要用Yii::app()->smarty很麻烦,是否可以把它在哪里配置一下,赋给$smarty,然后直接使用$smarty这样的简洁变量?

在 controller 的 init 里给this赋一个不行么?

Quote

在 controller 的 init 里给this赋一个不行么?

十分感谢!恩,这样可以!

那还想问下,如何进行全局的自动加载呢?比如我要实现单点登录,需要一个全局的自动加载?

是自动加载的。在你第一次用它的时候加载。

你可以在index.php里写一个全局函数:



<?php


function smarty() { return Yii::app()->smarty; }


然后就可以在任何地方使用用smarty()了。

Quote

是自动加载的。在你第一次用它的时候加载。

你可以在index.php里写一个全局函数:



<?php


function smarty() { return Yii::app()->smarty; }


然后就可以在任何地方使用用smarty()了。

恩,多谢,不过又遇到了一个问题,我现在用一个单点登录的,phpCAS这个,

假如把它放在index.php里的话会产生session_start()的问题:

“A session had already been started - ignoring session_start()”

Yii和phpCAS都用到了这个,但是这个好像不能使用两次的吧。

请问这个问题怎么解决呢?请问是要改一下源代码还是配置一下php什么的?

这个我放到controller里面倒是没什么问题。

我不清楚phpCAS。完整的错误信息是怎样的?

你可以试试在app config里配置session的autoStart=false。