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

    是不是很简单?



  • 相关阅读:
    使用Beanstalkd_console
    使用Beanstalkd实现队列
    队列中使用Database Driver
    Myeclipse中无法删除部署在tomcat上的工程
    欢迎使用CSDN-markdown编辑器
    oracle11g 远程登录数据库
    oracle11g卸载出错 无法删除文件,文件正在使用中
    oracle11g OEM无法连接到数据库实例解决办法
    用SQLData读写数据库自定义类型
    java读写中文文件
  • 原文地址:https://www.cnblogs.com/banyanCheung/p/2994425.html
Copyright © 2020-2023  润新知