PHP Conference Nagoya 2025

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 get(string|int $index, bool $fallback = true): mixed
public getErrorCode(): int
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

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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