接上篇。才疏学浅,试论述之,如有不妥之处,欢迎指正。
近日开发核心流程,我依然是研究代码居多。越看,越觉得自己需要学的,领悟的实在太多。突然想起某论坛某大神说的,前一两年,敢说自己精通;过一两年,只敢说自己熟练;再过一两年,只敢说自己会用了 —— 呵呵,当然这只是玩笑,我们做这行的,千万不能妄自菲薄。
扯远了。
先说说对这个框架的理解。
目录结构:
官方的例子是这样:
assets:资源文件夹
protected ::你的应用程序文件夹
themes ::主题文件
index.php:入口文件
当然,Yii设计良好的继承与封装方法,使得你完全可以不修改任何源代码就定义任何你想要的目录格式。这点在部署你自己的项目时很有用。
如我们现在的:
library:Yii框架文件夹
static:静态资源文件夹
system:程序文件夹
怎么配置呢?
框架文件夹很简单,只要在入口文件里定义即可,YiiBase.php这个文件会自动识别框架路径:
define('PATH_ROOT', dirname(__FILE__)); $yii = PATH_ROOT . '/library/yii.php';
剩下的两个在配置文件里配置:
$config = array( 'basePath' => PATH_ROOT . DIRECTORY_SEPARATOR . 'system', //程序文件夹 'components' => array( 'assetManager' => array( 'class' => 'MainAssetManager', 'basePath' => PATH_ROOT . DIRECTORY_SEPARATOR . 'static/', ), ), }
资源文件作为组件加载,其参数为处理的类以及basePath。
高级一点的定制:
这里要先说完入口文件。
跑一个 Yii 的 Demo或程序一般只需要加载两个文件:配置文件与框架文件。如官方Blog Demo:
<?php // change the following paths if necessary $yii = dirname(__FILE__) . '/http://www.cnblogs.com/framework/yii.php'; $config = dirname(__FILE__) . '/protected/config/main.php'; // remove the following line when in production mode // defined('YII_DEBUG') or define('YII_DEBUG',true); require_once($yii); Yii::createWebApplication($config)->run();
如果你是写自己的App,有可能需要写自己的WebApplication文件。来继承CApplication以重写更多自己的配置。如如下代码:
// WebApplication is used from the common source. $webApplication = PATH_ROOT . '/system/core/components/WebApplication.php';
这个文件一定要继承CApplication。
class WebApplication extends CWebApplication {}
这个文件的继承关系是这样:
为了配置自己想要的目录,这里暂时只重写了 CModule里的preinit方法。
class WebApplication extends CWebApplication{ ... more code here public function preinit(){ // 设置程序运行时文件夹 Runtime path $runtimePath = PATH_ROOT . '/system/runtime'; $this->setRuntimePath($runtimePath); // 设置程序模块文件夹 Modules path $modulePath = PATH_ROOT . '/system/app'; $this->setModulePath($modulePath); } }
分别调用了父类CApplication的setRuntimePath方法,CModule的setModulePath方法。
是不是很简单?