在 php 中创建匿名对象
众所周知,在JavaScript中创建匿名对象很容易,就像下面的代码一样:
var object = {
p : "value",
p1 : [ "john", "johnny" ]
};
alert(object.p1[1]);
输出:
an alert is raised with value "johnny"
同样的技术可以应用在PHP中吗?我们可以在PHP中创建匿名对象吗?
众所周知,在JavaScript中创建匿名对象很容易,就像下面的代码一样:
var object = {
p : "value",
p1 : [ "john", "johnny" ]
};
alert(object.p1[1]);
输出:
an alert is raised with value "johnny"
同样的技术可以应用在PHP中吗?我们可以在PHP中创建匿名对象吗?
在谈论对象时,“匿名”不是正确的术语。最好说“匿名类型的对象”,但这不适用于PHP。
PHP 中的所有对象都有一个类。“默认”类是 stdClass
,您可以通过以下方式创建它的对象:
$obj = new stdClass;
$obj->aProperty = 'value';
您还可以利用将数组强制转换为对象以获得更方便的语法:
$obj = (object)array('aProperty' => 'value');
print_r($obj);
但是,请注意,将数组强制转换为对象可能会为那些不是有效 PHP 变量名的数组键产生“有趣”的结果 - 例如,这是我的答案,显示了当键以数字开头时会发生什么。
已经有好几年了,但我认为我需要保持信息最新!
从 PHP 7 开始,就可以创建匿名类,因此您可以执行如下操作:
<?php
class Foo {}
$child = new class extends Foo {};
var_dump($child instanceof Foo); // true
?>
您可以在手册中阅读更多相关信息
但是我不知道它与JavaScript的实现有多相似,所以JavaScript和PHP中的匿名类之间可能存在一些差异。