Все можно решить без классов и без лишних сайд-эффектов
<?php
declare(strict_types=1);
function App(): callable
{
function show($items)
{
array_map(function($item) {
echo " widht -- " . $item['widht']() . " ";
echo " height -- " . $item['height']() . "\n";
echo " apply function -- " . $item['square']() . "\n";
}, $items);
}
function filter($items)
{
return array_filter($items, function ($item) {
return $item['square']() >= 4;
});
}
return function () {
$item2callback = function ($item) {
$width = function () use ($item) {
return $item[0];
};
$height = function () use ($item) {
return $item[1];
};
$square = function () use ($width, $height) {
return $width() * $height();
};
return [
'widht' => $width,
'height' => $height,
'square' => $square
];
};
$firstCollection = array_map($item2callback, json_decode('[[1,2], [3,4], [5,6]]'));
$secondCollection = array_map($item2callback, json_decode('[[1,2], [3,4], [5,6]]'));
show($firstCollection);
show(filter($secondCollection));
};
}
App()();
Но как по мне, это не очень читаемый код.
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации