从 PHP 7.3 升级到 8.1.1 后遇到问题
当然还有很多事情要做,但这有点奇怪。
这个例子对我不起作用,出现错误致命错误:
未捕获错误:找不到类“TestC”
C:\xampp81\htdocs\helpdesk811\test81\index.php:2 堆栈跟踪: #0
{main} 抛出在 C:\xampp81\htdocs\helpdesk811\test81\index.php 上
2号线
<?php
$a = new TestC;
echo $a->a;
class TestC
{
public $a = "a_value";
public $b;
public function __toString()
{
return "string";
}
}
如果我定义类和稍后创建实例,它可以工作,但我无法找到有关此行为的任何文档。它与静态方法相同(public static function foo(){echo "bar";})。
我尝试了 3v4l.org 沙箱,它适用于版本 >5.0 &&
您可以在定义类之前使用它,但前提是允许早期绑定。如果某些依赖项尚不可用、类使用特征或实现接口,则早期绑定不起作用。从 PHP 8 开始有一个新的Stringable
接口和定义该接口的每个类__toString()
功能隐含地实现该接口,从而防止早期绑定。
Nikita Popov (nikic) 写了一篇关于PHP 中的早期绑定他在其中提到这种行为确实没有得到很好的记录。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)