默认情况下,项目里会有以下几个配置文件:

$ tree ./config/

./Config/

├── app.php

├── dbs.php

├── di.php

└── sys.php

其中app.php为项目应用配置;dbs.php为分布式存储的数据库配置;sys.php为不同环境下的系统配置。这三个文件都是用于存放配置信息,可通过\PhalApi\DI()->config进行读取。

值得注意的是,./config/di.php文件则属于依赖注入配置文件,用于配置需在\PhalApi\DI()容器中注册的服务资源。

默认已注册配置组件服务,名称是\PhalApi\DI()->config。

// 配置

$di->config = new FileConfig(API_ROOT . '/config');

假设app.php配置文件里有:

return array(

'version' => '1.1.1',

'email' => array(

'address' => 'chanzonghuang@gmail.com',

);

);

可以分别这样根据需要获取配置:

// app.php里面的全部配置

\PhalApi\DI()->config->get('app'); //返回:array( ... ... )

// app.php里面的单个配置

\PhalApi\DI()->config->get('app.version'); //返回:1.1.1

// app.php里面的多级配置

\PhalApi\DI()->config->get('app.email.address'); //返回:'chanzonghuang@gmail.com'

其他配置文件的读取类似,你也可以根据需要添加新的配置文件。

当一个配置不存在时,返回NULL。例如:

\PhalApi\DI()->config->get('app.not_found'); //返回:NULL

当需要指定默认值时,可通过第二个参数指定。例如:

\PhalApi\DI()->config->get('app.not_found', 404); //返回:404

自从PhalApi 2.8.0及上以版本开始,区分隐式静默和显式异常两种模式,可通过\PhalApi\DI()->debug全局模式或初始化时指定调试模式。为调试模式时,若配置不存在将500异常提示;非调试模式时(即生产环境时),若配置文件不存在则不会抛异常,也不会出现之前的Warning提示,以免影响接口的正常返回。

Yaconf扩展需要PHP 7及以上版本,并且需要先安装Yaconf扩展。温馨提示:Yaconf扩展的安装请参考laruence/yaconf。

安装部署完成后,先重新注册\PhalApi\DI()->config:

// 配置

$di->config = new PhalApi\Config\YaconfConfig();

然后,便和正常的配置一样使用。

// 相当于Yaconf::get("foo")

\PhalApi\DI()->config->get('foo');

//相当于Yaconf::has("foo")

\PhalApi\DI()->config->has('foo');

需要注意的是,使用Yaconf扩展与默认的文件配置的区别的是,配置文件的目录路径以及配置文件的格式。当然也可以把Yaconf扩展的配置目录路径设置到PhalApi的配置目录./config。

如果需要使用其他方式读取配置,可根据实情需要,实现PhalApi\Config接口,然后在./config/di.php文件重新注册\PhalApi\DI()->config即可。

例如数据库配置,这样可以支持不发布代码的情况下进行配置更改。

phalapi可以依赖注入么_3.2 PhalApi 配置相关推荐

  1. phalapi可以依赖注入么_phalapi-进阶篇2(DI依赖注入和单例模式)

    phalapi-进阶篇2(DI依赖注入和单例模式) 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 离上一次更新过去了快两周,在其中编写了一个关于DB ...

  2. phalapi可以依赖注入么_[7.8]-phalapi-进阶篇2(DI依赖注入和单例模式) | PhalApi(π框架) - PHP轻量级开源接口框架...

    phalapi-进阶篇2(DI依赖注入和单例模式) 前言 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 离上一次更新过去了快两周,在其中编写了一个关于DB ...

  3. phalapi可以依赖注入么_phalapi-进阶篇8(PhalApi能带来什么和进阶篇总结)

    #phalapi-进阶篇8(PhalApi能带来什么和进阶篇总结) ##前言## 先在这里感谢phalapi框架创始人@dogstar,为我们提供了这样一个优秀的开源框架. 到今天位置PhalApi已 ...

  4. 依赖注入的正确打开方式 bilibili/kratos × google/wire

    一.前言 依赖注入相信大家都不陌生也不是什么新鲜的概念了,笔者初次深切体会依赖注入这种设计模式是在16年笔者在学习phalapi框架时使用的DI()函数,简单来说就是将所有的资源初始化集中在一起,通过 ...

  5. JavaEE开发之Spring中的依赖注入与AOP编程

    上篇博客我们系统的聊了<JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建>,并在之前的博客中我们聊了依赖注入的相关东西,并且使用Objective-C的R ...

  6. 在 Xunit 中使用依赖注入

    在 Xunit 中使用依赖注入 Intro 之前写过一篇 xunit 的依赖注入相关的文章,但是实际使用起来不是那么方便 今天介绍一个基于xunit和微软依赖注入框架的"真正"的依 ...

  7. Spring系列之依赖注入的三种方式

    目录 一.依赖注入方式 1.使用属性的setXXX方法注入 2.构造函数注入 (1)按类型匹配入参type (2)按索引匹配入参index (3)联合使用类型和索引匹配入参[type和index一起使 ...

  8. 控制反转(IoC)与依赖注入(DI)详解

    文章目录 什么是控制反转(IoC) 控制反转(IoC)有什么作用 控制反转(IoC)是怎么分类的 依赖注入 接口注入 Setter方法注入 构造器注入 依赖查找 上下文依赖查找(Contextuali ...

  9. 【概念题】java依赖注入,android开发实战-记账本清风紫雪

    这是使用构造器注入来装配bean 2.setter注入 这是使用setter注入,p是spring的名称空间,可以用来代替标签. 四.装配的概念 创建应用对象之间协作关系的行为称为装配.也就是说当一个 ...

  10. SSM之Spring文件配置/Spring怎么在pom文件中进行依赖注入/不同的依赖注入类型有哪些以及怎么写

    写在前面: 接着记录自己的Spring学习之旅,若看不懂则建议先看上一篇博客SSM框架之Spring介绍开发流程/IDEA如何建立Spring项目,详细代码可在我的Gitee仓库ssm-learnin ...

最新文章

  1. python连接池框架_python pymysql 连接池
  2. MySQL -> ES 数据同步 配置步骤
  3. MongoDB基本管理命令
  4. mysql 优化not null_mysql 优化之11:尽可能的使用 NOT NULL
  5. Oreo易支付程序开源源码分享发行版V1.3
  6. 淘宝成全球电商第一人气网站
  7. English Voice of I Knew You Were Trouble.
  8. JS作用域链(转载)
  9. java 菜单快捷键_Java为菜单栏添加快捷键
  10. mybatis执行sql脚本
  11. 深度操作系统 V15.11——心随意动 畅享云端
  12. 标题:我的中医自学历程(2013.8.26 更新网盘,欢迎下载和传播)
  13. 神仙打架!2020年清华大学本科生特奖答辩入围名单公布!简历爆棚!
  14. 用qt 编译qt moc
  15. threeJS导入FBX模型
  16. win10-SW2016工程图关联零件属性链接操作
  17. Proxifier v3.0
  18. netflix为什么叫网飞_没有商业中断:为什么世界杯比Netflix时代的NFL感觉更现代...
  19. kotlin——观察者模式
  20. python之个性二维码制作

热门文章

  1. Exchange邮箱爆破和信息收集
  2. 同时虚拟多个3D桌面
  3. NLP【07】transformer原理、实现及如何与词向量做对接进行文本分类(附代码详解)
  4. 如何才能找到影音文件的真实下载地址
  5. zuk z2 android 8,骁龙820享受安卓8.0!ZUK Z2悄然升级ZUI 4.0
  6. Kong 开源的服务网格Kuma爬过了K8S这座大山
  7. 2023河南大学计算机考研信息汇总
  8. 用proteus来看二极管的压降
  9. diy服务器个人主机_小型企业及个人用户入门级服务器DIY
  10. 使用Eclipse编译运行MapReduce程序