`
saviorwb
  • 浏览: 23598 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Yii应用目录设计及配置复用

阅读更多

上一篇文章当中已经介绍了关于YII的组织目录形式,但是经过实践会发现一些问题,上文中仅仅解决了,各应用之间共享models,components的问题,但是无法解决配置文件复用。

下面就这一问题进行描述。(原文地址

/webroot
       /protected
              /admin
                    /config
                         main.php
                    /models
                    /components
                    /controllers
                    /views
                    /runtime
             /config
                    main.php
             /models
             /components
             /controllers
             /views
             /runtime
             /extensions

依旧使用这样的组织目录形式,在之后的描述当中根目录下的的应用作为frontend,admin为backend,使用别名解析后,application指向protected目录,backend指向admin目录

前台配置文件如下(仅写一部分配置作为示例)

return array(
	'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
	'name'=>'网站前台',
	'language'=>'zh_cn',
	'preload'=>array('log'),
        'import'=>array(
'application.models.*', 'application.components.*', ),
       )
后台配置文件如下
$backend=dirname(dirname(__FILE__)); $frontend=dirname($backend); Yii::setPathOfAlias('backend',$backend); $frontendArray=require_once($frontend.'/config/main.php'); $backendArray=array( 'name'=>'网站后台管理系统', 'basePath'=>$frontend, 'viewPath' =>$backend.'/views', 'controllerPath'=>$backend.'/controllers', 'runtimePath' => $backend.'/runtime', 'import'=>array( 'application.models.*', 'application.components.*', 'backend.models.*', 'backend.components.*', ), ); return array_merge($frontendArray,$backendArray);
前台配置文件按照单一应用的配置形式即可,后台文件中,将前台文件包含,同时设置backend别名解析,使得所有应用当中
application指向protected目录,backend指向admin目录。
后台配置文件与前台配置文件进行数组合并,没有的项自动包含,相同项则将其覆盖,例如后台中可使用'language'=>'zh_cn',且'name'=>'网站后台管理系统'仍为自己,是将前台覆盖的结果
当然这样还有重复配置的现象,例如import的前后台导入含有重复设置,通过设置可以改变,但考虑到,此类情况较少,且需要使用递归合并,而配置文件为常用项,会影响性能,因此仅作一级数组合并功能。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics