gpt4 book ai didi

PHP:对象实例上的 new 运算符创建一个对象实例。为什么?

转载 作者:搜寻专家 更新时间:2023-10-31 21:19:31 25 4
gpt4 key购买 nike

以下代码工作并生成给定结果的原因是什么。它是一种特殊的语言结构,仅受 PHP 支持吗?如果有,那么是哪一个?或者它只是一个简单的 php 主义?

class Foo {};

$a = new Foo();
$b = new $a();

var_dump($a); // class Foo#1 (0)
var_dump($b); // class Foo#2 (0)

最佳答案

PHP 允许您从这样的变量创建对象实例:

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

因此,当您使用 new $a 时,PHP 会检查它是否是一个字符串以创建该类的新实例,如果它是一个对象,它将检索类的类名对象实例并从中创建一个新实例。

如果您尝试对非字符串或非对象变量执行相同操作:

$a = 1;
$b = new $a;

这会产生一个错误:

PHP Error: Class name must be a valid object or a string

PHP 5.3.0 引入了几种创建对象实例的新方法,这是您提供的场景示例:

class Test {}

$obj1 = new Test();
$obj2 = new $obj1;

更多信息:阅读示例#5 在下创建新对象 https://www.php.net/manual/en/language.oop5.basic.php#language.oop5.basic.new

关于PHP:对象实例上的 new 运算符创建一个对象实例。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56774285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com