PHP Conference Japan 2024

Yaf_Config_Ini 類別

(Yaf >=1.0.0)

簡介

Yaf_Config_Ini 讓開發者能夠以熟悉的 INI 格式儲存設定資料,並在應用程式中使用巢狀物件屬性語法讀取這些資料。INI 格式經過特殊設計,既能提供設定資料鍵的階層結構,又能提供設定資料區段之間的繼承關係。設定資料階層結構是透過使用點或句點字元(".")分隔鍵來實現的。一個區段可以透過在區段名稱後面加上冒號(":")和要繼承資料的區段名稱來擴充或繼承另一個區段。

注意:

Yaf_Config_Ini 使用了 » parse_ini_file() PHP 函式。請仔細閱讀此函式的文件,以了解其特定行為,這些行為會傳播到 Yaf_Config_Ini,例如如何處理特殊值 "true"、"false"、"yes"、"no" 以及 "null"。

類別概要

class Yaf_Config_Ini extends Yaf_Config_Abstract implements Iterator, ArrayAccess, Countable {
/* 屬性 */
/* 方法 */
public __construct(string $config_file, string $section = ?)
public count(): void
public current(): void
public __get(string $name = ?): void
public __isset(string $name): void
public key(): void
public next(): void
public offsetExists(string $name): void
public offsetGet(string $name): void
public offsetSet(string $name, string $value): void
public offsetUnset(string $name): void
public readonly(): void
公開 rewind(): void
公開 __set(字串 $name, 混合 $value): void
公開 toArray(): 陣列
公開 valid(): void
/* 繼承的方法 */
抽象 公開 Yaf_Config_Abstract::get(字串 $name, 混合 $value): 混合
}

屬性

_config

_readonly

範例

範例 #1 Yaf_Config_Ini() 範例

此範例說明了 Yaf_Config_Ini 從 INI 檔案載入配置資料的基本用法。在此範例中,同時存在生產系統和測試系統的配置資料。由於測試系統的配置資料與生產系統的配置資料非常相似,因此測試區段繼承自生產區段。在這種情況下,決定是任意的,也可以反過來寫,讓生產區段繼承自測試區段,但在更複雜的情況下可能並非如此。那麼,假設 /path/to/config.ini 中包含以下配置資料

; Production site configuration data
[production]
webhost                  = www.example.com
database.adapter         = pdo_mysql
database.params.host     = db.example.com
database.params.username = dbuser
database.params.password = secret
database.params.dbname   = dbname
 
; Staging site configuration data inherits from production and
; overrides values as necessary
[staging : production]
database.params.host     = dev.example.com
database.params.username = devuser
database.params.password = devsecret
<?php
$config
= new Yaf_Config_Ini('/path/to/config.ini', 'staging');

var_dump($config->database->params->host);
var_dump($config->database->params->dbname);
var_dump($config->get("database.params.username"));
?>

上述範例將輸出類似以下的內容

string(15) "dev.example.com"
string(6) "dbname"
string(7) "devuser

目錄

新增註解

使用者貢獻的註解 3 則註解

lee dot howarth dot 90 at gmail dot com
10 年前
@flowithwind

var_dump($config -> toArray()[ 'type' ][ 18 ][ 'text' ]);

字串 'abc' (長度=3)
zzxiaoman at gmail dot com
9 年前
當我使用 Yaf_Config_ini 搭配以下幾行時

type.18.text=abc
type.8.text=ddf
type.0.text=fjdsklf

您可以透過這種方式

$$configArr = $config->toArray();
var_dump($configArr['type'][18]['text']);

結果
abc
Mark
9 年前
/conf/db.ini

[product]
database.params.host = localhost
database.params.port = 5432
database.params.dbname = postgres
database.params.username = 'postgres'
database.params.password = 123456

<?php
$config
= new Yaf_Config_ini('../conf/db.ini','product');
$config = $config->toArray();
$host = $config['database']['params']['host'];
$port = $config['database']['params']['port'];
$database = $config['database']['params']['dbname'];
$username = $config['database']['params']['username'];
$password = $config['database']['params']['password'];
$pg_conn = pg_connect("host='$host' port='$port' dbname='$database' user='$username' password='$password' ");
?>
To Top