Yii - 使缩小可配置的最佳方法

时间:2014-11-20 11:36:56

标签: php inheritance yii

我在我的网站上使用minscript扩展名进行Javascript和CSS缩小。我在protected / config / main.php中有以下代码

'clientScript'=>array(
    'class'=>'ext.minScript.components.ExtMinScript',
)

在其中一个模块中,我需要自定义CClientScript类的实现。所以我创建了一个新类,并从ExtMinScript派生出来,就像这样。

class BaseClientScript extends ExtMinScript

在模块初始化代码中,我使用setComponent从主配置中“覆盖”“clientScript”组件。因此,我从ExtMinScript和我在BaseClientScript中的实现获得了缩小实现。

如果我想在模块中禁用缩小,我会更改代码以从CClientScript派生BaseClientScript。

class BaseClientScript extends CClientScript

现在我希望缩小在主配置中可配置。 (被保护/配置/ main.php)

我可以创建两个类,一个来自CClientScript,另一个来自ExtMinScript。 (BaseClientScript和BaseMinClientScript) 我不想这样做,因为这意味着我在两个类中复制了我的自定义客户端脚本实现。

有没有更好的方法来处理这种情况?

1 个答案:

答案 0 :(得分:1)

使用这样的技术:

 define('MinClientScriptClass', 'CClientScript');

当你想在protected / config / main.php

中使用缩小时

并在BaseClientScript中编写:

if (defined('MinClientScriptClass')) {

    class MinClientScriptClass extends CClientScript {}

} else {

    class MinClientScriptClass extends ExtMinScript {}
}

class BaseClientScript extends MinClientScriptClass

注意:如果要禁用缩小,只需在主配置中注释define。或者在main.php中使用config params,并在上面配置true / false值。