1. magic函数和配置项
在main.php中可以定义import,modules,components等配置项,这些配置项用来设置webapp的属性。
但是从app类代码里面是找不到这些属性的。这些属性是通过__set魔法函数以及调用set+$name的方法(如CModule类中的setComponents)来实现的。
2.预加载组件
在定义了compents后,你可能会想当然的认为他们被框架自动加载了。但实际情况并非如此简单。
比如你自定义了一个错误处理类MyErrHandler,里面定义了logErr方法。然后放在main.php components列表中,然后你在程序启动时试图使用yii::app()->getErrorHandler()->logErr()来处理错误。那你很可能会遇到错误:logErr未定义。
因为yii使用了延迟加载的策略。这里你能得到会是yii内置的CErrorHandler,而不是你设想中的MyErrHandler,MyErrHandler并没有被真正加载。
你需要把它放到preload中去才能够正确使用。
iefreer