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).

1   9   2015-06-03 23:22:44

1 ответ:

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

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

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