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

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

Неустранимая ошибка 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).


person Vladislav Rastrusny    schedule 03.06.2015    source источник
comment
Я не уверен, что это правильный вопрос, но есть ли у вас эта функция внутри класса модели или она находится в классе, который расширяет модель?   -  person Cayce K    schedule 03.06.2015
comment
@CayceK Это метод признака, используемый моделью.   -  person Vladislav Rastrusny    schedule 03.06.2015
comment
Не могли бы вы показать экономию?   -  person Cayce K    schedule 03.06.2015
comment
не знаю, может ли это быть полезным, я создал это: 3v4l.org/eEnUb, чтобы попытаться поиграй с кодом   -  person marcosh    schedule 04.06.2015
comment
Это ошибка, появившаяся недавно. Похоже, что эта фиксация может иметь случайно сломанные вещи.   -  person salathe    schedule 04.06.2015
comment
Поднята как ошибка №69754 для тех, кто хочет отслеживать.   -  person salathe    schedule 04.06.2015
comment
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что это ошибка PHP. :)   -  person salathe    schedule 04.06.2015
comment
Хм… Похоже, я допустил эту ошибку… исправлю позже. [Также: спасибо за тестирование PHP 7!]   -  person bwoebi    schedule 04.06.2015
comment
Этот вопрос не должен был быть закрыт. Вопросы, вызванные ошибками цепочки инструментов, по теме Stack Overflow. Голосование за повторное открытие.   -  person Scott Weldon    schedule 30.12.2016


Ответы (1)


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

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

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

person bwoebi    schedule 03.06.2015
comment
Спасибо ;) Это была не моя сборка PHP, а Travis-CI. Итак, я буду ждать, пока они получат новейший источник. - person Vladislav Rastrusny; 04.06.2015