# 讀取配置(Reading Configurations)
[Phalcon\\Config](http://docs.iphalcon.cn/api/Phalcon_Config.html)是一個用于將各種格式的配置文件讀取到PHP對象的組件(使用適配器)。
## 原生數組(Native Arrays)
下面的例子展示如何將本地數組導入[Phalcon\\Config](http://docs.iphalcon.cn/api/Phalcon_Config.html)對象。此選項提供了最好的性能,因為在這個請求中沒有讀取文件。
~~~
<?php
use Phalcon\Config;
$settings = [
"database" => [
"adapter" => "Mysql",
"host" => "localhost",
"username" => "scott",
"password" => "cheetah",
"dbname" => "test_db"
],
"app" => [
"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);
~~~
## 文件適配器(File Adapters)
可用的適配器有:
| Class | 解釋 |
| --- | --- |
| [Phalcon\\Config\\Adapter\\Ini](http://docs.iphalcon.cn/api/Phalcon_Config_Adapter_Ini.html) | 使用INI文件來存儲設置。內部適配器使用PHP函數 parse\_ini\_file。 |
| [Phalcon\\Config\\Adapter\\Json](http://docs.iphalcon.cn/api/Phalcon_Config_Adapter_Json.html) | Uses JSON files to store settings. |
| [Phalcon\\Config\\Adapter\\Php](http://docs.iphalcon.cn/api/Phalcon_Config_Adapter_Php.html) | Uses PHP multidimensional arrays to store settings. This adapter offers the best performance. |
| [Phalcon\\Config\\Adapter\\Yaml](http://docs.iphalcon.cn/api/Phalcon_Config_Adapter_Yaml.html) | Uses YAML files to store settings. |
## 讀取 INI 文件(Reading INI Files)
INI文件是存儲設置的常用方法。[Phalcon\\Config](http://docs.iphalcon.cn/api/Phalcon_Config.html)采用優化的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";
~~~
## 合并配置(Merging Configurations)
[Phalcon\\Config](http://docs.iphalcon.cn/api/Phalcon_Config.html)允許合并配置對象到另一個:
~~~
<?php
use Phalcon\Config;
$config = new Config(
[
"database" => [
"host" => "localhost",
"dbname" => "test_db",
],
"debug" => 1,
]
);
$config2 = new Config(
[
"database" => [
"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
)
~~~
有更多的適配器可用于這個組件:[Phalcon Incubator](https://github.com/phalcon/incubator)
## Injecting Configuration Dependency
You can inject configuration dependency to controller allowing us to use[Phalcon\\Config](http://docs.iphalcon.cn/api/Phalcon_Config.html)inside[Phalcon\\Mvc\\Controller](http://docs.iphalcon.cn/api/Phalcon_Mvc_Controller.html). To be able to do that, add following code inside your dependency injector script.
~~~
<?php
use Phalcon\Di\FactoryDefault;
use Phalcon\Config;
// Create a DI
$di = new FactoryDefault();
$di->set(
"config",
function () {
$configData = require "config/config.php";
return new Config($configData);
}
);
~~~
Now in your controller you can access your configuration by using dependency injection feature using nameconfiglike following code:
~~~
<?php
use Phalcon\Mvc\Controller;
class MyController extends Controller
{
private function getDatabaseName()
{
return $this->config->database->dbname;
}
}
~~~
- 簡介
- 安裝
- 安裝(installlation)
- XAMPP下的安裝
- WAMP下安裝
- Nginx安裝說明
- Apache安裝說明
- Cherokee 安裝說明
- 使用 PHP 內置 web 服務器
- Phalcon 開發工具
- Linux 系統下使用 Phalcon 開發工具
- Mac OS X 系統下使用 Phalcon 開發工具
- Windows 系統下使用 Phalcon 開發工具
- 教程
- 教程 1:讓我們通過例子來學習
- 教程 2:INVO簡介
- 教程 3: 保護INVO
- 教程4: 使用CRUD
- 教程5: 定制INVO
- 教程 6: V?kuró
- 教程 7:創建簡單的 REST API
- 組件
- 依賴注入與服務定位器
- MVC架構
- 使用控制器
- 使用模型
- 模型關系
- 事件與事件管理器
- Behaviors
- 模型元數據
- 事務管理
- 驗證數據完整性
- Workingwith Models
- Phalcon查詢語言
- 緩存對象關系映射
- 對象文檔映射 ODM
- 使用視圖
- 視圖助手
- 資源文件管理
- Volt 模版引擎
- MVC 應用
- 路由
- 調度控制器
- Micro Applications
- 使用命名空間
- 事件管理器
- Request Environmen
- 返回響應
- Cookie 管理
- 生成 URL 和 路徑
- 閃存消息
- 使用 Session 存儲數據
- 過濾與清理
- 上下文編碼
- 驗證Validation
- 表單_Forms
- 讀取配置
- 分頁 Pagination
- 使用緩存提高性能
- 安全
- 加密與解密 Encryption/Decryption
- 訪問控制列表
- 多語言支持
- 類加載器 Class Autoloader
- 日志記錄_Logging
- 注釋解析器 Annotations Parser
- 命令行應用 Command Line Applications
- Images
- 隊列 Queueing
- 數據庫抽象層
- 國際化
- 數據庫遷移
- 調試應用程序
- 單元測試
- 進階技巧與延伸閱讀
- 提高性能:下一步該做什么?
- Dependency Injection Explained
- Understanding How Phalcon Applications Work
- Api
- Abstract class Phalcon\Acl