理解 Yii::import 方法
Posted
技术标签:
【中文标题】理解 Yii::import 方法【英文标题】:Understanding Yii::import method 【发布时间】:2014-06-01 04:50:46 【问题描述】:正如 Yii 文档中所说的
导入类或目录。
导入一个类就像包含相应的类文件。这 主要区别在于导入一个类要轻得多,因为它 仅在第一次引用该类时才包含该类文件 时间。
导入目录相当于在php中添加目录 包括路径。如果导入多个目录,则目录 稍后导入的将优先于类文件搜索(即, 它们被添加到 PHP 包含路径的前面)。
考虑以下代码sn-p:
Yii::import('application.components.document');
echo "This is included file:";
foreach(get_included_files() as $value)
echo "<div>".$value."</div>";
这是一个输出:
Z:\home\localhost\www\index.php
Z:\home\localhost\www\yii\framework\yii.php
Z:\home\localhost\www\yii\framework\YiiBase.php
Z:\home\localhost\www\yii\framework\base\interfaces.php
Z:\home\localhost\www\yii\framework\web\CWebApplication.php
Z:\home\localhost\www\yii\framework\base\CApplication.php
Z:\home\localhost\www\yii\framework\base\CModule.php
Z:\home\localhost\www\yii\framework\base\CComponent.php
Z:\home\localhost\www\web-config.php
Z:\home\localhost\www\yii\framework\logging\CLogger.php
Z:\home\localhost\www\yii\framework\web\CHttpRequest.php
Z:\home\localhost\www\yii\framework\base\CApplicationComponent.php
Z:\home\localhost\www\yii\framework\collections\CMap.php
Z:\home\localhost\www\yii\framework\web\CUrlManager.php
Z:\home\localhost\www\protected\controllers\tranController.php
Z:\home\localhost\www\yii\framework\web\CController.php
Z:\home\localhost\www\yii\framework\web\CBaseController.php
Z:\home\localhost\www\protected\controllers\tranAction.php
Z:\home\localhost\www\yii\framework\web\actions\CAction.php
但是这个类是在我使用它之后导入的,比如Yii::app()->document;
。
【问题讨论】:
【参考方案1】:函数 Yii::import 不包含文件,而是简单地添加路径到 $_import 数组,看this。
【讨论】:
感谢您的回答。但我想澄清一件事:如果我们将组件应用为Yii::app()->document;
,那么会调用__get
魔术方法。此方法调用getComponent
方法,该方法使用_componentConfig
数组,但不使用_import
。那么为什么没有Yii::import('application.components.document');
就不能使用Yii->app()->document
组件呢?
我认为可以,因为我们在配置文件中指定了类组件:document=>array('class'=>'application.components.document')以上是关于理解 Yii::import 方法的主要内容,如果未能解决你的问题,请参考以下文章