我们假设把error_reporting这个例子禁用; 否则,下面的代码将触发已过时和严格的通知书,分别根据不同的PHP版本。
<?php
classA
{
functionfoo()
{
if (isset($this)) {
echo’$this is defined (‘;
echoget_class($this);
echo”)\n”;
} else {
echo”\$this is not defined.\n”;
}
}
}
classB
{
functionbar()
{
A::foo();
}
}
$a= newA();
$a->foo();
A::foo();
$b= newB();
$b->bar();
B::bar();
?>
在PHP 5上述例子的输出:
$这是指(A) $这是没有定义。 $这是指(B) $这是没有定义。
在PHP 7上面的例子中的输出:
$这是指(A) $这是没有定义。 $这是没有定义。 $这是没有定义。
创建一个类的实例,必须使用新的关键字。 一个对象总是会被创建,除非该对象有一个 构造函数 定义抛出异常的错误。 类应该实例之前定义(并且在一些情况下,这是一个要求)。
如果字符串包含一个类名称与新使用的,这个类的一个新的实例将被创建。 如果类是在一个命名空间,必须这样做时,可以使用它的全名。