zoukankan      html  css  js  c++  java
  • Yaf 初体验

    关于yaf,php扩展实现的框架,作者鸟哥:http://www.laruence.com/。

    写着篇文章的目的是是为了更快的熟悉yaf。

    文档,http://www.laruence.com/manual/。

    1、安装

      window

      下载:http://pecl.php.net/package/yaf/2.3.2/windows

        (注意php版本、64/32位系统,thread_safe模式根据你phpinfo()里的Thread Safety是否enable决定)

      安装:直接解压到php的ext目录下就好了,修改php.ini 

    extension=php_yaf.dll

      linux

      下载:http://pecl.php.net/package/yaf(注意php版本)

      安装: 解压缩以后, 进入Yaf的源码目录, 依次执行(其中PHP_BIN是PHP的bin目录):

    $PHP_BIN/phpize
    ./configure --with-php-config=$PHP_BIN/php-config
    make
    make install

      

      然后查看phpinfo(),如果出现yaf扩展表示安装成功。

    2、Hello world

      这个偷懒,直接去看文档就好了:http://www.laruence.com/manual/tutorial.firstpage.html。

    3、配置

      配置方面说实话,看开发人的习惯了,楼主说下自己的

      首先,yaf.environ博主放在了php.ini中,这样可以一定程度上区分生产环境与开发环境,从而减少误上线配置的问题。

      3.1、conf

      楼主分成了主配置和常用配置,先贴图

      

      主配置:application.ini,(application.directory,use_namespace等配置项)

      常用配置:mysql.ini,route.ini...

      这些配置其实是按需加载的,方法加载方式:new Yaf_Config_Ini($inifile, ini_get('yaf.environ'));

      这时候出现了一个问题,就是如果一个请求多次用到了数据库,我们就需要把配置存起来而不是每次去open这个文件。

      楼主简单封了一个配置的类,贴代码

    <?php
    /**
     * get & init config
     * @author wangzhitao
     *
     */
    class LibConfig{
    
        private static $_DB_CONFIG = null;
        private static $_ROUTE_CONFIG = null;
        
        public static function getDbConfig()
        {
            if (self::$_DB_CONFIG===null){
                $inifile = APP_PATH . '/conf/mysql.ini';
                self::$_DB_CONFIG = new Yaf_Config_Ini($inifile, ini_get('yaf.environ'));
            }
            return self::$_DB_CONFIG;
        }
        
        public static function getRouteConfig()
        {
            if (self::$_ROUTE_CONFIG===null){
                $inifile = APP_PATH . '/conf/route.ini';
                self::$_ROUTE_CONFIG = new Yaf_Config_Ini($inifile, ini_get('yaf.environ'));
            }
            return self::$_ROUTE_CONFIG;
        }
    }

      当然你也可以用yaf的register。

        Yaf_Registry::set($name, $value);
        Yaf_Registry::get($name);

      3.2、路由

      路由就要说到bootstrap了,因为博主是在bootstrap里面加载的路由配置

      在公共入口文件里这样写,$app->bootstrap()->run();

      yaf会自动去application目录下寻找Bootstrap.php,贴代码

    <?php 
    class Bootstrap extends Yaf_Bootstrap_Abstract{
        
        public function _initConfig() {
            $config = Yaf_Application::app()->getConfig();
            Yaf_Registry::set("config", $config);
        }
        
        /**
         * 实例化路由
         * @param Yaf_Dispatcher $dispatcher
         */
        public function _initRoute(Yaf_Dispatcher $dispatcher) 
        {
            $router = Yaf_Dispatcher::getInstance()->getRouter();
            $routeConf = LibConfig::getRouteConfig();
            $router->addConfig($routeConf->routes);
        }
        
    }

      route.ini,毕竟会遇到很多自定义的路由配置

    [common]
        routes.bbsindex.type="rewrite"
        routes.bbsindex.match="/bbs/:name/:value"
        routes.bbsindex.route.controller=bbs
        routes.bbsindex.route.action=index
        
        routes.bbslist.type="rewrite"
        routes.bbslist.match="/bbslist/:name/:value"
        routes.bbslist.route.controller=bbs
        routes.bbslist.route.action=index
        
    [develop : common]  

    4、其他

      1、自动加载方式

        Controller  默认模块下为{项目路径}/controllers/, 否则为{项目路径}/modules/{模块名}/controllers/

        Model    {项目路径}/models/

        Plugin    {项目路径}/plugins/


      2、命名方式

        controller:文件名Xxx.php,类名XxxController

        model:文件名Xxx.php,类名Dir_XxxModel

     
      比如model下的Bbs下的Post.php,实例化方式为$postObj = new Bbs_PostModel();

      

    OK,想到再补充

  • 相关阅读:
    jquery 移除数组重复的元素----$.unique()
    jQuery UI 日期控件--datepicker
    jQuery 如何设置input checkbox 更有效 prop()
    while loading persisted sessions 异常解决方法
    eclipse总是自动跳到ThreadPoolExecutor.java
    oracle的学习 第二节:创建数据表
    oracle是数据库的学习第一节:数据库的安装
    解决IE无法解析json的方法
    浏览器兼容问题----Firefox不兼容event的解决方法
    VSCode变换python的调试解释器
  • 原文地址:https://www.cnblogs.com/iamdoufu/p/4496595.html
Copyright © 2011-2022 走看看