读取配置(Reading Configurations)

Phalcon\Config 是一个用于将各种格式的配置文件读取到PHP对象的组件(使用适配器)。

文件适配器(File Adapters)

可用的适配器有:

文件类型 解释
Native Array 使用PHP多维数组存储设置。这个适配器提供了最好的性能
Php 使用PHP文件来存储设置,提供了较好的性能。
Ini 使用INI文件来存储设置,内部使用PHP函数 parse_ini_file 来解析文件。
Yaml 使用YAML文件来存储设置,内部使用PHP函数 yaml_parse_file 来解析文件。

原生数组(Native Arrays)

下面的例子展示如何将本地数组导入 Phalcon\Config 对象。此选项提供了最好的性能,因为在这个请求中没有读取文件。

  1. <?php
  2.  
  3. use Phalcon\Config;
  4.  
  5. $settings = array(
  6. "database" => array(
  7. "adapter" => "Mysql",
  8. "host" => "localhost",
  9. "username" => "scott",
  10. "password" => "cheetah",
  11. "dbname" => "test_db"
  12. ),
  13. "app" => array(
  14. "controllersDir" => "../app/controllers/",
  15. "modelsDir" => "../app/models/",
  16. "viewsDir" => "../app/views/"
  17. ),
  18. "mysetting" => "the-value"
  19. );
  20.  
  21. $config = new Config($settings);
  22.  
  23. echo $config->app->controllersDir, "\n";
  24. echo $config->database->username, "\n";
  25. echo $config->mysetting, "\n";

如果你想更好的组织你的项目,你可以在另一个文件保存数组,然后读入它。

  1. <?php
  2.  
  3. use Phalcon\Config;
  4.  
  5. require "config/config.php";
  6. $config = new Config($settings);

读取 PHP 文件(Reading PHP Files)

通过加载 PHP 文件获取配置信息,配置文件内容如下:

  1. <?php
  2. return array(
  3. "database" => array(
  4. "adapter" => "Mysql",
  5. "host => localhost",
  6. "username => scott",
  7. "password => cheetah",
  8. "dbname => test_db",
  9. ),
  10. "phalcon" => array(
  11. "controllersDir => "../app/controllers/",
  12. "modelsDir => "../app/models/",
  13. "viewsDir => "../app/views/",
  14. ),
  15. );

访问方式如下所示:

  1. <?php
  2.  
  3. $config = new Phalcon\Config\Adapter\Php("path/config.php");
  4.  
  5. echo $config->phalcon->controllersDir, "\n";
  6. echo $config->database->username, "\n";

读取 INI 文件(Reading INI Files)

INI文件是存储设置的常用方法。 Phalcon\Config\Adapter\Ini 采用优化的PHP函数parse_ini_file读取这些文件。为方便访问,文件部分解析成子设置。

  1. [database]
  2. adapter = Mysql
  3. host = localhost
  4. username = scott
  5. password = cheetah
  6. dbname = test_db
  7.  
  8. [phalcon]
  9. controllersDir = "../app/controllers/"
  10. modelsDir = "../app/models/"
  11. viewsDir = "../app/views/"
  12.  
  13. [models]
  14. metadata.adapter = "Memory"

访问方式如下所示:

  1. <?php
  2.  
  3. use Phalcon\Config\Adapter\Ini as ConfigIni;
  4.  
  5. $config = new ConfigIni("path/config.ini");
  6.  
  7. echo $config->phalcon->controllersDir, "\n";
  8. echo $config->database->username, "\n";
  9. echo $config->models->metadata->adapter, "\n";

读取 YAML 文件(Reading Yaml Files)

通过解析 YAML 文件获取配置信息,配置文件内容如下:

  1. phalcon:
  2. baseuri: /phalcon/
  3. models:
  4. metadata: memory
  5. database:
  6. adapter: mysql
  7. host: localhost
  8. username: user
  9. password: passwd
  10. name: demo

访问方式如下所示:

  1. <?php
  2.  
  3. $config = new Phalcon\Config\Adapter\Php("path/config.php");
  4.  
  5. echo $config->phalcon->baseuri, "\n";
  6. echo $config->database->username, "\n";

合并配置(Merging Configurations)

Phalcon\Config 允许合并配置对象到另一个:

  1. <?php
  2.  
  3. use Phalcon\Config;
  4.  
  5. $config = new Config(
  6. array(
  7. 'database' => array(
  8. 'host' => 'localhost',
  9. 'dbname' => 'test_db'
  10. ),
  11. 'debug' => 1
  12. )
  13. );
  14.  
  15. $config2 = new Config(
  16. array(
  17. 'database' => array(
  18. 'dbname' => 'production_db',
  19. 'username' => 'scott',
  20. 'password' => 'secret'
  21. ),
  22. 'logging' => 1
  23. )
  24. );
  25.  
  26. $config->merge($config2);
  27.  
  28. print_r($config);

上面的代码会产生以下内容:

  1. Phalcon\Config Object
  2. (
  3. [database] => Phalcon\Config Object
  4. (
  5. [host] => localhost
  6. [dbname] => production_db
  7. [username] => scott
  8. [password] => secret
  9. )
  10. [debug] => 1
  11. [logging] => 1
  12. )

原文: http://www.myleftstudio.com/reference/config.html