PHP 7 Fatal error: static::class cannot be used for compile-time class name resolution
PHP 7 Fatal error: static::class cannot be used for compile-time class name resolution
当前 Travis-CI PHP7 构建在执行以下代码时抛出以下错误:
PHP 7 Fatal error: static::class cannot be used for compile-time class name resolution
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;
必须失败)。
将其设置为零,现在可以正常工作了。只需拉出最新的 master 即可修复。
当前 Travis-CI PHP7 构建在执行以下代码时抛出以下错误:
PHP 7 Fatal error: static::class cannot be used for compile-time class name resolution
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;
必须失败)。
将其设置为零,现在可以正常工作了。只需拉出最新的 master 即可修复。