поздняя статическая привязка в закрытии PHP5.5 против 5.6

Зачем new static в закрытии (в классе static метод) равно new self в PHP5.5, хотя он правильно связан в PHP5.6?

Дано:

abstract class Parent {
public function __construct($something)
{
$this->something = $something;
}

public static function make($array)
{
return array_map(function ($el) {
return new static($el);
}, $array);
}
}

class Child extends Parent {

}

затем

Child::make($someArray);
// PHP5.5 FatalError: cannot instantiate abstract class Parent
// PHP5.6 works fine, as expected

В 5.5 это будет работать как положено:

public static function make($array)
{
$child = get_called_class();

return array_map(function ($el) use ($chlid) {
return new $child($el);
}, $array);
}

но почему это происходит? На php.net я не нашел упоминаний об изменениях статической привязки в 5.6.

6

Решение

Похоже эта ошибка, исправлено в 5.5.14.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]