1

我正在尝试使用日光浴室扩展(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 行代码。一种选择是将所有库文件放在一个用于生产的目录中。但是我不确定它是否会影响功能(我通常是实现扩展/库的“新手”)。

4

1 回答 1

2

当我向 Yii 添加 3rd 方类时,我将它们放在一个文件夹中 protected/components/,例如/protected/components/solr.

然后在主配置中,我将以下行添加到导入部分:

'import' => array(
      'application.components.solr.*',
      ...

但是你需要一个一个地添加每个子文件夹,这是由于性能问题,Yii 的开发人员在一些版本之前删除了递归导入。如果你认为这很糟糕,那么你可以使用命名空间来做你想做的事,但你需要 PHP 5.3

于 2012-12-23T21:28:18.503 回答