PHPackages                             isq/maio - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. isq/maio

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

isq/maio
========

A package to merge arrays into objects in PHP.

v2.2.0(6mo ago)0132[1 issues](https://github.com/Isaque-Claudino-dos-Santos/merge-array-into-object/issues)MITPHPPHP &gt;=8CI passing

Since Jul 10Pushed 6mo ago1 watchersCompare

[ Source](https://github.com/Isaque-Claudino-dos-Santos/merge-array-into-object)[ Packagist](https://packagist.org/packages/isq/maio)[ RSS](/packages/isq-maio/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (3)Versions (22)Used By (0)

Merge Array Into Object
=======================

[](#merge-array-into-object)

[![PHP-UNIT](https://github.com/Isaque-Claudino-dos-Santos/merge-array-into-object/actions/workflows/php-tests.yml/badge.svg)](https://github.com/Isaque-Claudino-dos-Santos/merge-array-into-object/actions/workflows/php-tests.yml)[![PHP-CS-FIXER](https://github.com/Isaque-Claudino-dos-Santos/merge-array-into-object/actions/workflows/php-format.yml/badge.svg)](https://github.com/Isaque-Claudino-dos-Santos/merge-array-into-object/actions/workflows/php-format.yml)[![Doc Deploy](https://github.com/Isaque-Claudino-dos-Santos/merge-array-into-object-doc/actions/workflows/deploy.yml/badge.svg)](https://github.com/Isaque-Claudino-dos-Santos/merge-array-into-object-doc/actions/workflows/deploy.yml)

Introdução
----------

[](#introdução)

Pacote `composer` para mesclar um `array` em uma `class/object` de forma padronizada.

### Instalação

[](#instalação)

```
composer require isq/maio
```

Básico
------

[](#básico)

Para todos o exemplo vamos usar a classe `CreateUserDTO` e `CreateUserAddressDTO`.

### Mesclando Dados de um `Array` para `Class/Object`

[](#mesclando-dados-de-um-array-para-classobject)

Para isso você deve usar o método `merge` da classe `ISQ\MAIO\MergeArrayIntoObject`.

```
use ISQ\MAIO\MergeArrayIntoObject;

class CreateUserDTO {
	public readonly string $firstName;
	public readonly string $lastName;
}

$data = [
	'firstName' => 'Foo',
	'lastName' => 'Baz'
];

$maio = MergeArrayIntoObject::getInstance();
$createUserDTO = $maio->merge(new CreateUserDTO, $data);

echo $createUserDTO::class; // CreateUserDTO
echo $createUserDTO->firstName; // Foo
echo $createUserDTO->lastName; // Baz
```

Perceba que todos os dados de `$data` foi mesclado conforme o nome dadas propriedades class classe, quando usado o método `merge` é retornado a instância da class `CreateUserDTO` com as propriedades preenchi.

### Definir Chave Externa com `#[Key]`

[](#definir-chave-externa-com-key)

Tem casos que você tem um nome de propriedade que não combina com os dados recebidos ou estão em cadeia, para resolver isso é possível usar o atributo `ISQ\MAIO\Attributes\Key`.

```
use ISQ\MAIO\MergeArrayIntoObject;
use ISQ\MAIO\Attributes\Key;

class CreateUserDTO {
	public readonly string $firstName;
	public readonly string $lastName;
	#[Key('user_age')]
	public readonly int $age;
	#[Key('address.postal_code')]
	public readonly int $postalCode;
}

$data = [
	'firstName' => 'Foo',
	'lastName' => 'Baz',
	'user_age' => 34,
	'address' => [
		'postal_code' => 12312311
	]
];

$maio = MergeArrayIntoObject::getInstance();
$createUserDTO = $maio->merge(new CreateUserDTO, $data);

echo $createUserDTO::class; // CreateUserDTO
echo $createUserDTO->firstName; // Foo
echo $createUserDTO->lastName; // Baz
echo $createUserDTO->age; // 34
echo $createUserDTO->postalCode; // 12312311
```

Perceba que as propriedades `$age` e `$postalcode` não combinam com o que tem dentro da variável `$data` então foi “renomeado” com o atributo `Key`.

> Quando é passado para `Key` o texto `address.postal_code` é referente a estrutura: `{ ”address”: {

```
  “postal_code”: 12312311

```

} }`

>

### Executar Função em uma Propriedade com o Atributo `#[Call]`

[](#executar-função-em-uma-propriedade-com-o-atributo-call)

Caso precise manipular o valor vindo de `$data` é possível usar o atributo `ISQ\MAIO\Attributes\Call`.

```
use ISQ\MAIO\MergeArrayIntoObject;
use ISQ\MAIO\Attributes\Call;

class MyHelper {
	public static function add(int $value): int
	{
		return $value + 1;
	}

	public function toUpperCase(string $value): string
	{
		return strtoupper($value);
	}
}

class CreateUserDTO {
	#[Call(MyHelper::class, 'add')]
	public readonly int $id;

	#[Call('strtoupper')]
	public readonly string $firstName;

	#[Call(new MyHelper, 'toUpperCase')]
	public readonly string $lastName;
}

$data = [
	'id' => 0,
	'firstName' => 'Foo',
	'lastName' => 'Baz'
];

$maio = MergeArrayIntoObject::getInstance();
$createUserDTO = $maio->merge(new CreateUserDTO, $data);

echo $createUserDTO::class; // CreateUserDTO
echo $createUserDTO->id; // 1
echo $createUserDTO->firstName; // FOO
echo $createUserDTO->lastName; // BAZ
```

Perceba que o assim que o valor `id` de `$data` é recuperado, a propriedade `$id` usa o atributo `Call` para invocar o método `add` estático dentro de `MyHelper` classe, assim fazendo a repassando o valor de `id` dentro de `$data` para o método e atribuindo o retorno a propriedade `$id`.

### Definindo Listas com `ArrayOf`

[](#definindo-listas-com-arrayof)

Para definir uma lista de itens para uma class especifica é possível com `ISQ\MAIO\Attributes\ArrayOf`.

```
use ISQ\MAIO\MergeArrayIntoObject;
use ISQ\MAIO\Attributes\ArrayOf;

class User {
	public readonly string $id;
}

class UsersDTO {
	#[ArrayOf(User::class)]
	public readonly array $data;
}

$data = [
	'data' => [
		['id' => 1],
		['id' => 2],
		['id' => 3],
		['id' => 4]
	]
];

$maio = MergeArrayIntoObject::getInstance();
$usersDTO = $maio->merge(new CreateUserDTO, $data);

echo $createUserDTO::class; // UsersDTO
echo $usersDTO[0]::class; // User
echo $usersDTO[0]->id; // 1
echo $usersDTO[1]->id; // 2
echo $usersDTO[2]->id; // 3
echo $usersDTO[3]->id; // 4
```

Perceba que a lista dentro `$data` é transformada em uma lista da classe `User`.

###  Health Score

36

—

LowBetter than 82% of packages

Maintenance68

Regular maintenance activity

Popularity13

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~8 days

Recently: every ~30 days

Total

16

Last Release

187d ago

Major Versions

v1.1.3 → v2.0.02025-07-31

PHP version history (2 changes)v1.0.0PHP ^8.4

v1.1.0PHP &gt;=8

### Community

Maintainers

![](https://www.gravatar.com/avatar/f5d3ece508c33968c29d3c2a8126a29697f48a14b9f20b70153b0b6c2fbab6bd?d=identicon)[Isaque-Claudino-dos-Santos](/maintainers/Isaque-Claudino-dos-Santos)

---

Top Contributors

[![Isaque-Claudino-dos-Santos](https://avatars.githubusercontent.com/u/74436802?v=4)](https://github.com/Isaque-Claudino-dos-Santos "Isaque-Claudino-dos-Santos (84 commits)")

---

Tags

composerpackagistarrayobjectmergedtoautoMerge Array Into Objectmaio

###  Code Quality

TestsPHPUnit

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/isq-maio/health.svg)

```
[![Health](https://phpackages.com/badges/isq-maio/health.svg)](https://phpackages.com/packages/isq-maio)
```

###  Alternatives

[symfony/property-access

Provides functions to read and write from/to an object or array using a simple string notation

2.8k295.3M2.5k](/packages/symfony-property-access)[cuyz/valinor

Dependency free PHP library that helps to map any input into a strongly-typed structure.

1.5k9.2M108](/packages/cuyz-valinor)[jasny/dotkey

Dot notation access for objects and arrays

14219.5k6](/packages/jasny-dotkey)[michaldudek/foundation

A set of useful PHP classes.

13111.9k13](/packages/michaldudek-foundation)[peridot-php/object-path

A string syntax to fetch values from array and object hierarchies

1053.6k1](/packages/peridot-php-object-path)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
