在 php 中创建匿名对象

2022-08-30 06:44:58

众所周知,在JavaScript中创建匿名对象很容易,就像下面的代码一样:

var object = { 
    p : "value", 
    p1 : [ "john", "johnny" ]
};

alert(object.p1[1]);

输出:

an alert is raised with value "johnny"

同样的技术可以应用在PHP中吗?我们可以在PHP中创建匿名对象吗?


答案 1

在谈论对象时,“匿名”不是正确的术语。最好说“匿名类型的对象”,但这不适用于PHP。

PHP 中的所有对象都有一个类。“默认”类是 stdClass,您可以通过以下方式创建它的对象:

$obj = new stdClass;
$obj->aProperty = 'value';

您还可以利用将数组强制转换为对象以获得更方便的语法:

$obj = (object)array('aProperty' => 'value');
print_r($obj);

但是,请注意,将数组强制转换为对象可能会为那些不是有效 PHP 变量名的数组键产生“有趣”的结果 - 例如,这是我的答案,显示了当键以数字开头时会发生什么。


答案 2

已经有好几年了,但我认为我需要保持信息最新!

从 PHP 7 开始,就可以创建匿名类,因此您可以执行如下操作:

<?php

    class Foo {}
    $child = new class extends Foo {};

    var_dump($child instanceof Foo); // true

?>

您可以在手册中阅读更多相关信息

但是我不知道它与JavaScript的实现有多相似,所以JavaScript和PHP中的匿名类之间可能存在一些差异。


推荐