php 7 — PHP 7 Фатальная ошибка: static :: class нельзя использовать для разрешения имени класса во время компиляции

Текущие сборки PHP7 Travis-CI выдают следующую ошибку при выполнении следующего кода:

PHP 7 Фатальная ошибка: static :: class не может быть использован для разрешения имени класса во время компиляции

trait EloquentValidatingTrait
{
// Some declarations skipped
/**
* Eloquent will call this on model boot
*/
public static function bootEloquentValidatingTrait()
{
// Calling Model::saving() and asking it to execute assertIsValid() before model is saved into database
$savingCallable = [static::class, 'saving'];
$validationCallable = [static::class, 'assertIsValid'];
forward_static_call($savingCallable, $validationCallable);
}

Это временная ошибка или будущая функция, которую я пропустил? Примечания под этим RFC говорит, что это должно работать (и это работает в 5.5 и 5.6).

9

Решение

Исправлена ​​эта ошибка через http://git.php.net/?p=php-src.git;a=commitdiff;h=1d3f77d13d2b457bdf1bc52045da4679741e65cb

Ошибка была проста … У меня во время компиляции оптимизация с постоянным разрешением установила режим для принудительного успеха или смерти (простое логическое значение для вызова функции). Этот режим необходим для статических выражений (например, const FOO = static::class; должен провалиться).

Установите это в ноль, и теперь он работает нормально. Просто вытащите нового мастера для исправления.

7

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

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

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