PHP 8.4.0 RC2 available for testing

La classe ResourceBundle

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

Introduction

Les application localisées ont souvent besoin de manipuler des données devant être personnalisées en fonction d'une locale considérée, e.g.: messages, libélés, chaines de formatage. ICU permet de définir des ressources que l'application pourra charger avec une locale une fois pour toutes : tous les accès ultérieurs se feront au moyen d'une interface unique non dépendante de la locale considérée.

Cette classe permet l'accès aux fichiers de données de ICU. Ces fichiers représentent des tableaux binaires que ICU utilise pour stocker les données localisées.

Les bundle de ressource ICU supportent les ressources simples et complexes. Les ressources complexes sont des conteneurs qui peuvent être indéxés numériquement ou litéralement (comme les tableaux PHP). Les ressources simples, elles, peuvent être de type chaine, entier, binaire ou tableau numérique.

ResourceBundle supporte l'accès direct aux données via la syntaxe des tableaux ainsi que l'itération grâce à foreach. Ces possibilités existent aussi via les méthodes. Le résultat sera une valeur PHP pour les ressources simples, ou un objet ResourceBundle pour les ressources complexes. Les ressources sont en lecture seule.

Synopsis de la classe

class ResourceBundle implements IteratorAggregate, Countable {
/* Méthodes */
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
}

Historique

Version Description
8.0.0 La classe ResourceBundle implémente désormais IteratorAggregate. Auparavant, seule Traversable était implémentée.
7.4.0 La classe ResourceBundle implémente désormais Countable.

Sommaire

add a note

User Contributed Notes 1 note

up
2
maiseralves at gmail dot com
13 years ago
<?php
/*
* Struct of a Resource Bundle file
* file root.txt
* root:table {
* usage:string { "Usage: genrb [Options] files" }
* version:int { 122 }
* errorcodes:array {
* :string { "Invalid argument" }
* :string { "File not found" }
* }
* }
* use: $genrb root.txt to generate resource bundle file (root.res)
*/

//recursive function to list a resource bundle file structure using a ResourceBundle Object ( ) reference
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);
}
}
}
//open root.res from folder locale
$rb = new ResourceBundle('root', "./locale");

t($rb);//call the function

/* The output from root table is
* |- 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