Closures are a poor man’s object

Има се предвид, че клоужърите и ламбдите имайки свой скоуп на променливите, могат да извършват т.н. „data hiding“, тоест да „скриват“ и капсулират информацията от околният свят в себе си.

Aко погледнем следният пример, ще видим че даденият клоужър bloa() може да има свои, частни променливи, които не са достъпни отвън.

<?php
$patapan = function(string $s): string {
    return strtoupper($s);
};

$bloa = function($a) use ($patapan): string {
    $prom1 = 'Super!';
    return $patapan($a);
};

$strings = ["apple", "orange", "banana", "coconut"];
$upprs = array_map($bloa, $strings);

var_dump($upprs);  // Dumps the uppercased array
var_dump($prom1);  // Undefined variable $prom1 in…
echo $patapan('Good question');  // GOOD QUESTION

Какво излиза на практика? Че closures и lambdas си приличат с обектите, по това, че предлагат свой скоуп и правят data hiding. Moже би затова се казва, че са „the poor man objects“.