我正在尝试使用日光浴扩展(扩展为php中的solr)扩展我的yii应用程序。
但是,扩展的库有多个子目录。因此,我必须包含来自特定子目录的文件,如下所示:
Yii::import('application.extensions.Library.Solarium.*');
Yii::import('application.extensions.Library.Solarium.Client.*');
Yii::import('application.extensions.Library.Solarium.Client.RequestBuilder.*');
如果我已经包含了所有文件,这会导致代码丑陋以及不可预测性。虽然我现在正在执行此操作,但我会将其移动到稍后进行生产。有没有其他方便的方法来包含目录和子目录中的所有文件?有很多子目录,所以提到每个子目录将导致20-30行代码。一种选择是将所有库文件放在一个目录中进行生产。但是我不确定它是否会影响功能(我通常是“新的”实现扩展/库)。
答案 0 :(得分:2)
当我向Yii添加第三方课程时,我将它们放在protected/components/
下的文件夹中,如/protected/components/solr
。
然后在主要配置中,我将以下行添加到导入部分:
'import' => array(
'application.components.solr.*',
...
但是你需要逐个添加每个子文件夹,这是由于性能问题,Yii的开发人员在一些版本之前删除了递归导入。如果你认为这很糟糕,那么你可以使用命名空间来做你想做的事,但你需要PHP 5.3