带有对象引用的 PHP new 运算符

标签 php

如何使用“new”运算符使用另一个对象引用而不是类名来创建新对象?看看 $b 是如何创建的...$a 是对对象的引用。

代码示例:

class test {
    function aaa() {echo "aaa";}

}


$a = new test();
$b = new $a();
$b->aaa();

最佳答案

$a = new Foo;
$b = new $a;

这只是一个速记符号,意思是创建一个与$a 相同的类的新对象是一个实例。它不是克隆或复制或其他任何东西。

这是同一种速记:

$foo = new Foo;
echo $foo::BAR;

使用类常量的“正确”语法是 Foo::BAR,但是 $foo 指的是类,所以使用 $foo: :BAR 是一个方便的速记。事实上,不仅如此,它还通过允许您的对象实例被替换以及您的代码动态引用这些替换中可能被重写的常量来启用多态性。 new $foo 是同一类东西,它允许您动态实例化类,而不必确切知道那是什么类。

这不一定是的想法,但它有时可能很有用。

这些机制是在 PHP 5.3 中引入的:http://php.net/manual/en/language.oop5.basic.php#language.oop5.basic.new

关于带有对象引用的 PHP new 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24904281/

相关文章:

javascript - 将 node js 和 socket IO 与 codeigniter 集成

php - 循环内的多个文件验证

php - CodeIgniter + jQuery Ajax 运行错误但成功调用回调

php - 如何在 Symfony3.4 中清除 Controller 中的缓存?

javascript - CORS:无法获取 POST 请求正文。

php - 方法重载和类继承

php - 使用 PHP 管理多个网页

php 搜索结果图像显示并填充 CSS div

php - 从转录的 PDF 文件缩放 HTML

php - 如何更改YouTube嵌入式电影的重定向?