PHP 7致命错误:static :: class不能用于编译时类名解析

时间:2015-06-03 20:22:45

标签: php php-7

当前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 个答案:

答案 0 :(得分:7)

通过http://git.php.net/?p=php-src.git;a=commitdiff;h=1d3f77d13d2b457bdf1bc52045da4679741e65cb

修正了此错误

错误很简单......我在编译时常量分辨率优化设置模式强制成功或死亡(函数调用的简单布尔值)。静态表达式需要该模式(如const FOO = static::class;必须失败)。

将其设置为零,现在工作正常。只需拉出最新的主人来修复。