Пакет Data Block - это удобный инструмент для разработчиков на PHP, который помогает работать с вложенными структурами данных, такими как JSON из API или массивы с глубокими уровнями вложения. Он облегчает чтение, фильтрацию и изменение данных без громоздких ручных проверок и условий, которые обычно приходится писать самим.
Что такое Data Block и зачем он нужен
Иногда в приложениях приходится иметь дело с большими и сложными наборами данных такими как ответы API, конфигурации в JSON, массивы с разными уровнями вложенности. Data Block оборачивает такие структуры в объект, который позволяет:
безопасно получать значения по пути, используя точки (например,
user.profile.name);фильтровать и сортировать данные по условиям;
изменять или добавлять вложенные элементы;
экспортировать результат в разные форматы (JSON, YAML или в файл).
Это особенно полезно, когда стандартные массивы PHP становятся неудобными для работы из-за глубокой вложенности.
Как начать использовать Data Block
Для использования пакета нужно импортировать класс Block из пространства имен:
use HiFolks\DataType\Block;
use HiFolks\DataType\Enums\Operator;Пакет поддерживает создание объекта Block из разных источников:
прямо из массива;
из JSON-строки;
по URL, который возвращает JSON.
Примеры работы с данными
Чтение и фильтрация
Вот как можно загрузить данные из внешнего API и вывести только те элементы, которые соответствуют условию:
Block::fromJsonUrl('https://api.github.com/orgs/hi-folks/repos')
->select('full_name', 'stargazers_count')
->where('stargazers_count', Operator::GREATER_THAN, 0)
->orderBy('stargazers_count', 'desc')
->forEach(function ($item) {
echo $item->get('full_name').' : '.$item->get('stargazers_count').PHP_EOL;
});В этом примере мы получаем список репозиториев организации, выбираем только нужные поля, фильтруем по количеству звёзд и сортируем результаты.
Работа с вложенными массивами
Если у вас есть вложенный массив с данными, например список фруктов, можно легко получать и изменять значения:
$fruits = [
"avocado" => [
'name' => 'Avocado',
'fruit' => '',
'wikipedia' => 'https://en.wikipedia.org/wiki/Avocado',
'color' => 'green',
'rating' => 8
],
// ...
];
$data = Block::make($fruits);
$data->get('avocado'); // возвращает массив
$data->get('avocado.color'); // возвращает строку "green"
$data->set('cherry', [
'name' => 'Cherry',
'fruit' => '',
'wikipedia' => 'https://en.wikipedia.org/wiki/Cherry',
'color' => 'red',
'rating' => 9,
]);
$data->set('cherry.rating', 5);Такой синтаксис с точечной нотацией позволяет легко обращаться к глубоко вложенным элементам.
Экспорт данных
После всех операций объект Block можно преобразовать обратно в JSON или сохранить в файл, что удобно для сериализации, передачи по API или записи в конфигурацию.
Когда стоит использовать Data Block
Этот пакет особенно полезен в следующих случаях:
когда данные приходят из внешних источников в виде сложных JSON-структур;
когда нужно обрабатывать вложенные данные без большого количества ручных проверок;
если приложение активно фильтрует, сортирует или трансформирует данные перед использованием;
для прототипов, где важна скорость разработки и простота кода.