2024 年日本 PHP 研討會

ResourceBundle 類別

(PHP 5 >= 5.3.2, PHP 7, PHP 8, PECL intl >= 2.0.0)

簡介

在地化軟體產品通常需要根據目前地區設定自訂的資料集,例如:訊息、標籤、格式模式。ICU 資源機制允許定義應用程式可以根據地區設定載入的資源集,同時以統一的地區設定獨立方式存取它們。

此類別實作了對 ICU 資源資料檔案的存取。這些檔案是 ICU 用於儲存在地化資料的二進位資料陣列。

ICU 資源套件可以保存簡單資源和複雜資源。複雜資源是容器,可以是整數索引或字串索引(就像 PHP 陣列一樣)。簡單資源可以是以下類型:字串、整數、二進位資料欄位或整數陣列。

ResourceBundle 支援透過陣列存取模式和 foreach 迭代直接訪問數據,以及透過類別方法訪問。結果對於簡單資源將會是 PHP 值,而對於複雜資源則會是 ResourceBundle 物件。所有資源皆為唯讀。

類別概要

class ResourceBundle implements IteratorAggregate, Countable {
/* 方法 */
public __construct(?string $locale, ?string $bundle, bool $fallback = true)
public count(): int
public static create(?string $locale, ?string $bundle, bool $fallback = true): ?ResourceBundle
public get(string|int $index, bool $fallback = true): mixed
public getErrorCode(): int
public static getLocales(string $bundle): array|false
}

更新日誌

版本 說明
8.0.0 ResourceBundle 現在實作了 IteratorAggregate。先前實作的是 Traversable
7.4.0 ResourceBundle 現在實作了 Countable

目錄

新增註解

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

maiseralves at gmail dot com
13 年前
<?php
/*
* 資源包檔案結構
* 檔案 root.txt
* root:table {
* usage:string { "Usage: genrb [Options] files" }
* version:int { 122 }
* errorcodes:array {
* :string { "Invalid argument" }
* :string { "File not found" }
* }
* }
* 使用方式: $genrb root.txt 產生資源包檔案 (root.res)
*/

//遞迴函式,使用 ResourceBundle 物件 ( ) 參考列出資源包檔案結構
function t($rb) {
foreach(
$rb as $k => $v) {
if(
is_object($v)) {
print_r($v);
var_dump($k);
t($v);
} else {
var_dump($k . " " . $v);
}
}
}
//從 locale 資料夾開啟 root.res
$rb = new ResourceBundle('root', "./locale");

t($rb);//呼叫函式

/* root 表格的輸出為
* |- string(34) "usage Usage: genrb [Options] files"
* |- string(11) "version 122"
* |- ResourceBundle Object ( ) string(10) "errorcodes"
* |- string(18) "0 Invalid argument"
* |- string(16) "1 File not found"
*/
?>
To Top