读取配置(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 对象。此选项提供了最好的性能,因为在这个请求中没有读取文件。
- <?php
- use Phalcon\Config;
- $settings = array(
- "database" => array(
- "adapter" => "Mysql",
- "host" => "localhost",
- "username" => "scott",
- "password" => "cheetah",
- "dbname" => "test_db"
- ),
- "app" => array(
- "controllersDir" => "../app/controllers/",
- "modelsDir" => "../app/models/",
- "viewsDir" => "../app/views/"
- ),
- "mysetting" => "the-value"
- );
- $config = new Config($settings);
- echo $config->app->controllersDir, "\n";
- echo $config->database->username, "\n";
- echo $config->mysetting, "\n";
如果你想更好的组织你的项目,你可以在另一个文件保存数组,然后读入它。
- <?php
- use Phalcon\Config;
- require "config/config.php";
- $config = new Config($settings);
读取 PHP 文件(Reading PHP Files)
通过加载 PHP 文件获取配置信息,配置文件内容如下:
- <?php
- return array(
- "database" => array(
- "adapter" => "Mysql",
- "host => localhost",
- "username => scott",
- "password => cheetah",
- "dbname => test_db",
- ),
- "phalcon" => array(
- "controllersDir => "../app/controllers/",
- "modelsDir => "../app/models/",
- "viewsDir => "../app/views/",
- ),
- );
访问方式如下所示:
- <?php
- $config = new Phalcon\Config\Adapter\Php("path/config.php");
- echo $config->phalcon->controllersDir, "\n";
- echo $config->database->username, "\n";
读取 INI 文件(Reading INI Files)
INI文件是存储设置的常用方法。 Phalcon\Config\Adapter\Ini 采用优化的PHP函数parse_ini_file读取这些文件。为方便访问,文件部分解析成子设置。
- [database]
- adapter = Mysql
- host = localhost
- username = scott
- password = cheetah
- dbname = test_db
- [phalcon]
- controllersDir = "../app/controllers/"
- modelsDir = "../app/models/"
- viewsDir = "../app/views/"
- [models]
- metadata.adapter = "Memory"
访问方式如下所示:
- <?php
- use Phalcon\Config\Adapter\Ini as ConfigIni;
- $config = new ConfigIni("path/config.ini");
- echo $config->phalcon->controllersDir, "\n";
- echo $config->database->username, "\n";
- echo $config->models->metadata->adapter, "\n";
读取 YAML 文件(Reading Yaml Files)
通过解析 YAML 文件获取配置信息,配置文件内容如下:
- phalcon:
- baseuri: /phalcon/
- models:
- metadata: memory
- database:
- adapter: mysql
- host: localhost
- username: user
- password: passwd
- name: demo
访问方式如下所示:
- <?php
- $config = new Phalcon\Config\Adapter\Php("path/config.php");
- echo $config->phalcon->baseuri, "\n";
- echo $config->database->username, "\n";
合并配置(Merging Configurations)
Phalcon\Config 允许合并配置对象到另一个:
- <?php
- use Phalcon\Config;
- $config = new Config(
- array(
- 'database' => array(
- 'host' => 'localhost',
- 'dbname' => 'test_db'
- ),
- 'debug' => 1
- )
- );
- $config2 = new Config(
- array(
- 'database' => array(
- 'dbname' => 'production_db',
- 'username' => 'scott',
- 'password' => 'secret'
- ),
- 'logging' => 1
- )
- );
- $config->merge($config2);
- print_r($config);
上面的代码会产生以下内容:
- Phalcon\Config Object
- (
- [database] => Phalcon\Config Object
- (
- [host] => localhost
- [dbname] => production_db
- [username] => scott
- [password] => secret
- )
- [debug] => 1
- [logging] => 1
- )