(Zend Framework> Zend_Config)如何避免使用.ini或.xml配置?

Kir*_*lla 5 php zend-framework

我不认为使用.ini或.xml文件对于高流量项目是一个好主意,因为每个页面加载都会导致解析config.ini或.xml文件.

有没有办法用常规php数组作为配置替换使用.ini/.xml?现在php ini看起来像......

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.date.timezone = "Europe/London"
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = rob
resources.db.params.password = 123456
resources.db.params.dbname = zf-tutorial
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.doctype = "XHTML1_STRICT"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西......

<?php

$config = array(
    'production' => array(
        ['phpSettings.display_startup_errors'] => 0,
        ['phpSettings.display_errors'] => 0,
    ),
);
Run Code Online (Sandbox Code Playgroud)

可能吗?我该怎么做以及如何告诉应用程序使用我自己的Config.php?

谢谢你,对不起我的英语.

UPD:我认为将数组传递给Zend_Application构造函数是正确的方法吗?

Pas*_*TIN 8

是的,您可以使用数组初始化Zend_Config对象的数据; 看一下Zend Framework手册的这一页 (引用什么是arround 示例#1):

通常情况下,用户会使用其中一个适配器类,如Zend_Config_IniZend_Config_Xml,但如果配置数据在PHP数组中可用,则可以简单地将数据传递给 Zend_Config 构造函数,以便利用简单的面向对象的接口


您还应该在同一页面上查看示例#2 (引用它的内容):

通常需要使用纯PHP的配置文件.以下代码说明了如何轻松完成此操作

基本上,您首先要创建一个包含配置的PHP文件:

// config.php
return array(
  ...
  ...
);
Run Code Online (Sandbox Code Playgroud)

然后,从另一个文件,使用比配置文件:

$config = new Zend_Config(require 'config.php');
Run Code Online (Sandbox Code Playgroud)


但请注意,这样做,您将失去轻松修改配置,将其写回.ini文件的能力 - 根据您的情况,最终(或不)可能会成为问题.

可以使用的解决方案是缓存Zend_Config数据:

  • .ini文件中读取它
  • 将它存储到一些缓存机制中
  • 并且,对于下一页,从缓存加载它,而不是重新解析.ini文件.