CakeFest 2024: The Official CakePHP Conference

A classe ResourceBundle

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

Introdução

Produtos de software específicos para localiades frequentemente requerem conjuntos de dados que devem ser customizados dependendo da localidade atual, ex.: mensagens, etiquetas, modelos de formatação. O mecanismo de recursos da ICU permite definir conjuntos de recursos que a aplicação pode carregar com base na localidade, enquanto acessa-as em uma maneira unificada, independente de localidade.

Esta classe implemente o acesso aos arquivos de dados de recursos ICU. Estes arquivos são arrays de dados binários que a ICU usa para armazenar os dados de localidade.

O pacote de recursos ICU pode ter recursos simples e complexos. Recursos complexos são contêineres que podem ser indexados com números inteiros ou strings (da mesma forma que arrays PHP). Recursos simples podem ser dos seguintes tipos: string, inteiro, campo de dado binário ou array inteiro.

ResourceBundle suporta acesso direto aos dados através de padrão de acesso a array e iteração através de foreach, assim como acesso por métodos de classe. O resultado será um valor PHP para os recursos simples e um objeto ResourceBundle para os complexos. Todos os recursos são somente-leitura.

Resumo da classe

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

Registro de Alterações

Versão Descrição
8.0.0 ResourceBundle implementa IteratorAggregate agora. Anteriormente, Traversable era implementado no lugar.
7.4.0 ResourceBundle implementa Countable agora.

Índice

add a note

User Contributed Notes 1 note

up
2
maiseralves at gmail dot com
12 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