我在我的网站上使用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) 我不想这样做,因为这意味着我在两个类中复制了我的自定义客户端脚本实现。
有没有更好的方法来处理这种情况?
答案 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值。