Yii 学习心得 1

接上篇。才疏学浅,试论述之,如有不妥之处,欢迎指正。


近日开发核心流程,我依然是研究代码居多。越看,越觉得自己需要学的,领悟的实在太多。突然想起某论坛某大神说的,前一两年,敢说自己精通;过一两年,只敢说自己熟练;再过一两年,只敢说自己会用了 —— 呵呵,当然这只是玩笑,我们做这行的,千万不能妄自菲薄。


扯远了。


先说说对这个框架的理解。


目录结构


官方的例子是这样:


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方法。

是不是很简单?



原文地址:https://www.cnblogs.com/banyanCheung/p/2994425.html