Текущие сборки 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).
Исправлена эта ошибка через http://git.php.net/?p=php-src.git;a=commitdiff;h=1d3f77d13d2b457bdf1bc52045da4679741e65cb
Ошибка была проста … У меня во время компиляции оптимизация с постоянным разрешением установила режим для принудительного успеха или смерти (простое логическое значение для вызова функции). Этот режим необходим для статических выражений (например, const FOO = static::class;
должен провалиться).
Установите это в ноль, и теперь он работает нормально. Просто вытащите нового мастера для исправления.
Других решений пока нет …