zoukankan      html  css  js  c++  java
  • 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方法。

    是不是很简单?



  • 相关阅读:
    jQuery的deferred对象详解
    2016.7.15见闻
    如何在win7下配置IIS?
    对于transform的新认识
    移动前端工作的那些事---前端制作之微信小技巧篇
    css改变图片的颜色
    对promise的简单理解
    小程序打印饼图报错VM6541:1 thirdScriptError Converting circular structure to JSON;
    小程序使用echarts 在一个页面打印多个饼图的坑
    小程序使用wx.navigateTo无法跳转到加了tabBar的页面
  • 原文地址:https://www.cnblogs.com/banyanCheung/p/2994425.html
Copyright © 2011-2022 走看看