Помогите понять почему функция сделана так, как она сделана

hell0w0rd

Продвинутый новичок
PHP:
public static function share(Closure $callable)
{
        return function ($c) use ($callable) {
            static $object;

            if (null === $object) {
                $object = $callable($c);
            }

            return $object;
        };
}
Функция выдрана отсюда: https://github.com/fabpot/Pimple/blob/master/lib/Pimple.php
Главным образом - что такое $object? Я так понимаю вся ее суть в том, чтобы объект создался единожды, но почему так происходит - понять не могу
 

Yaponchick

Новичок
Тут не создаётся 1 раз, а запоминается результат первого вызова;

PHP:
$func = $obj->share(function($c) { return $c > 1 ? "a" : "b"; });
PHP:
$func(1); ## a
$func(0); ## a
$func(-10); ## a
$func(-20); ## a
PHP:
$func(-1); ## b
$func(1); ## b
$func(45); ## b
$func(9999); ## b
По сути, в $object сохраниться результат выполнения переданной тобой кложуры ;)
 
Сверху