Converte arrays (inclusive multidimensionais) em objetos stdClass de forma
simples e recursiva. Ideal para transformar dados estruturados — como respostas
de APIs, arquivos JSON decodificados ou registros de banco de dados — em objetos
fácil de manipular.
- ✅ Conversão recursiva: todos os arrays internos também viram objetos
- ✅ Tratamento automático de chaves numéricas (
0→key_0) - ✅ API simples e enxuta (apenas 2 métodos públicos/úteis)
- ✅ Compatível com análise estática via PHPStan
- ✅ Documentação completa em PHPDoc, em português
| Dependência | Versão |
|---|---|
| PHP | ^8.5 |
| Composer | ^2.0 |
Instale via Composer:
composer require php-tool-kit/array-to-objectuse Ptk\ArrayToObject\ArrayToObject;
$conversor = new ArrayToObject([
'nome' => 'Maria',
'email' => '[email protected]',
'ativo' => true,
]);
$objeto = $conversor->convert();
echo $objeto->nome; // MariaArrays internos são convertidos recursivamente em objetos:
$conversor = new ArrayToObject([
'empresa' => [
'razao_social' => 'Exemplo Ltda.',
'endereco' => [
'cidade' => 'Campinas',
'uf' => 'SP',
],
],
]);
$objeto = $conversor->convert();
echo $objeto->empresa->endereco->cidade; // CampinasComo nomes de propriedades não podem iniciar com dígitos, chaves numéricas
recebem automaticamente o prefixo key_:
$conversor = new ArrayToObject([
'itens' => ['maçã', 'banana', 'laranja'],
]);
$objeto = $conversor->convert();
echo $objeto->itens->key_0; // maçã
echo $objeto->itens->key_1; // banana
echo $objeto->itens->key_2; // laranjaVocê pode instanciar sem argumento e passar o array apenas na chamada de
convert():
$conversor = new ArrayToObject();
$objeto = $conversor->convert([
'status' => 'ativo',
]);Chamar convert() novamente sem argumento reutiliza o último array
definido. Também é possível trocar o array a qualquer momento:
$objetoA = $conversor->convert(['valor' => 1]); // usa este array
$objetoB = $conversor->convert(); // reutiliza o mesmo arrayCria o conversor, permitindo definir o array logo na instanciação.
Realiza a conversão e retorna o objeto resultante. Se um array for passado, ele substitui o array definido anteriormente.
Exceções:
\RuntimeException— lançada quando nenhum array foi definido (nem no construtor, nem no parâmetro, nem em chamadas anteriores).
Execute a suíte de testes com:
composer testO código é totalmente compatível com o PHPStan:
./vendor/bin/phpstan analyse src --level=maxDistribuído sob a licença MIT.