http://www.laruence.com/manual/yaf.ini.html    //先看一下惠新宸鸟哥yaf官网的配置说明

我们可以在php.ini中定义开发环节配置项,把本地开发设置成develop、测试环境配置成test、生产环境配置成product。代码如下,默认的是product

[yaf]
yaf.environ=develop

通过设置运行环境,在项目中可以通过ini_get(‘yaf.environ’)获取环境参数。

yaf配置文件一般都放在项目的conf文件夹下,yaf application实例化的时候需要传递一个配置文件路径,配置文件叫application.ini,先看下application.ini的结构:

[common]
; 通用配置 [product : common]
; 生产环境配置 [test : common]
; 测试环境配置 [develop : common]
; 开发环境配置

配置例子如下代码

application.debug = TRUE
;当意外的错误发生的时候,开启/关闭异常抛出。 当开启的时候,Yaf将会抛出异常而不是触发可捕捉的错误。
;1抛出异常. 0获取可以调试的错误
application.dispatcher.throwException =
;开启/关闭自动异常捕获功能
; Yaf会将所有未捕获的异常交给Error Controller的Error Action来处理. 0直接打印
application.dispatcher.catchException =
;如果 throwException = ,那么 catchException是什么都无所谓了. 因为catchException是捕获异常的.
;如果 throwException = , catchException的值决定异常处理方式.但catchException为1,必须定义Error Controller,否则还会报这个错误.
;
;redis.namespace = "TEST_"
;redis.servers.host = '127.0.0.1'
;redis.servers.port = ''
;redis.servers.password = ''
;redis.servers.weight = Redis.namespace = "TEST_"
Redis.servers.host = '127.0.0.1'
Redis.servers.port = ''
Redis.servers.password = ''
Redis.servers.weight = sessRedis.host = '127.0.0.1'
sessRedis.port = ''
sessRedis.timeout = 0.5
sessRedis.db =
sessRedis.auth = '' DB_TYPE="mysql"
DB_HOST="127.0.0.1"
DB_PORT=""
DB_CHARSET="utf8"
DB_NAME="kmjd"
DB_USER="root"
DB_PWD="root"

配置除了节之外,节和节之间还有继承关系。

例如[product : common]就表示product的配置会继承common的配置。

yaf在实例化应用传递配置文件路径和运行环境:

define("APPLICATION_PATH", realpath(dirname(__FILE__) . '/../'));
$app = new \Yaf\Application(APPLICATION_PATH . "/conf/application.ini", ini_get('yaf.environ'));

这样当项目运行环境在develop下的时候,会优先读取[develop : common]内的配置,如果没有则会从[common]中获取。

\Yaf\Application::app()->getConfig();         //在项目中任何地方都可以通过次代码获取application.ini中的配置。

事实上该例中可以不用传递ini_get(‘yaf.environ’)参数,在实例化的时候yaf会自行读取php.ini中的yaf.environ参数。但如果是其它的配置文件,则需要传递该参数。代码如下

$app  = new Yaf_Application(APP_PATH . "/conf/application.ini");

代码中获取配置项的方法如下

$this->_config = Yaf_Application::app()->getConfig()->get("Redis");
$this->_host = $this->_config['servers']['host'];
$this->_port = $this->_config['servers']['port'];
$this->_db = $this->_config['servers']['db'];

当然,除了用yaf指定的application.ini配置之外,把所有的配置都归结到一个文件中,也可以分开配置,yaf中提供了\Yaf\Config\Ini类来处理这些额外的配置文件。

$config = new \Yaf\Config\Ini(APPLICATION_PATH . '/conf/url.ini', ini_get('yaf.environ'));

在实际读取的时候,最好能设置一个静态变量保存读取到的配置,避免重复申请系统open函数调用。如下:

static $config = null;
if ($config === null) {
$config = new \Yaf\Config\Ini(APPLICATION_PATH . '/conf/url.ini', ini_get('yaf.environ'));
}

详细可以参考yaf扩展示例Bootstrap中的getUrlIniConfig方法。

Yaf框架的配置的更多相关文章

  1. yaf框架安装配置

    YAF中文文档:http://www.laruence.com/manual/index.html 1 YAF框架是用C开发的,属于PHP的扩展框架: 2 YAF的性能相对于源生PHP,性能只降低不到 ...

  2. macOS 安装配置yaf框架 生成yaf项目

    macOS 安装配置yaf框架 Yaf只支持PHP5.2及以上的版本. 并支持最新的PHP5.3.3 Yaf需要SPL的支持. SPL在PHP5中是默认启用的扩展模块 Yaf需要PCRE的支持. PC ...

  3. Linux CentOS 配置Yaf框架

    简介 Yaf框架想必大家都有所了解,它是一个开源的高性能的PHP框架 官网地址:https://www.php.net/manual/zh/book.yaf.php Yaf开发文档:https://w ...

  4. Yaf框架下类的自动加载

    前面两篇博客分别讲述了PHP自带的类加载和composer中类的自动加载,其实Yaf框架也实现了基于PSR0和PSR4的类的自动加载.根据我对Yaf下类的自动加载方式的理解写下这篇博客.由于接触Yaf ...

  5. 关于yaf 框架的win安装

    http://www.sunqinglin.cn/index.php/archives/329.html PHP windows下yaf框架的安装和配置 2014年10月28日 ⁄ PHP, 编程开发 ...

  6. 如何在phpstorm中查看yaf框架源码

    1.到github下载yaf框架的doc 下载链接 https://github.com/elad-yosifon/php-yaf-doc/archive/master.zip 2.解压zip包 3. ...

  7. php的session获取不到问题之ie浏览器(yaf框架)

    最近在内网写代码的时候遇到一个很怪异的问题, 花了好长时间调试,在次记录一下问题和解决方法. 问题描述: 内网开发使用的yaf框架,在火狐,谷歌,创建的session和cookie都能获取的到,但是在 ...

  8. php 安装yaf扩展和yaf框架

    一.安装yaf扩展(windows安装) 1.查看你电脑安装的开发环境(phpinfo()的信息),查找 "Zend Extension Build"和"PHP Exte ...

  9. yaf框架安装

    第一步:明白yaf框架是以扩展的形式要先配置到php里面,对于windows系统的使用者,首先要去官网:http://code.google.com/p/yafphp/downloads/list如果 ...

随机推荐

  1. 多IP服务器应用可以有效的降低成本

    多IP的常规应用很多,SEO,EDM,VPN代理等.可以有效的解决成本,很多时候的租用一台高配置服务器通过XEN,hyper-V等虚拟化技术分割成VPS ,共用一台服务器就会大大的降低成本,这样就需要 ...

  2. Linux指令--wc

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...

  3. Servlet--ServletConfig接口,GenericServlet类

    ServletConfig接口 定义:public interface ServletConfig 这个接口定义了一个对象, 通过这个对象, Servlet 引擎配置一个 Servlet 并且允许 S ...

  4. Python Django连接(听明白了是连接不是创建!)Mysql已存在的数据库

    再声明一次!是连接不是创建!网上的一些人难道连接和创建这俩词都弄不懂就在那里瞎写一些文章! (Python Django连接存在的数据库) Python连接存在的数据库-------MySql 1.首 ...

  5. 微信H5支付网络环境未能通过安全验证,请稍后再试(获取终端ip )

    在写微信H5支付的时候需要获取终端IP使用官方的方法是不对的报错如下: 故重写一个:如下 function get_client_ip(){ if(getenv('HTTP_CLIENT_IP') & ...

  6. Git Batch命令(转)

    echo 和 @ 回显命令 @ #关闭单行回显 echo off #从下一行开始关闭回显 @echo off #从本行开始关闭回显.一般批处理第一行都是这个 echo on #从下一行开始打开回显 e ...

  7. 【django之用户认证】

    一.auth模块 模块导入 from django.contrib import auth 主要方法如下: 1 .authenticate()    提供了用户认证,即验证用户名以及密码是否正确,一般 ...

  8. template.helper()方法

    上一篇文章我们已经讲到了helper()方法,但是上面的例子只是一个参数的写法,如果是多个参数,写法就另有区别了. <div id="user_info"></d ...

  9. JAVA并发编程学习笔记------基础构建模块

    一.并发容器:ConcurrentHashMap:1.分段锁机制: 任意数量的读取线程可以并发的访问map,执行读取操作的线程和执行写入操作的线程可以并发的访问Map,并且一定数量的写入线程可以并发的 ...

  10. 洛谷 [P1265] 公路修建

    本题的描述:城市联盟,最短距离.. 使人想到了prim求MST,再一看数据范围:完全图!,那么一定得用prim,因为只有5000个点,所以不加优化的prim就能过. #include <iost ...