首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在php中创建匿名对象

在php中创建匿名对象
EN

Stack Overflow用户
提问于 2011-06-17 18:28:01
回答 9查看 92K关注 0票数 146

正如我们所知,在JavaScript中创建匿名对象很容易,如下面的代码所示:

代码语言:javascript
复制
var object = { 
    p : "value", 
    p1 : [ "john", "johnny" ]
};

alert(object.p1[1]);

输出:

代码语言:javascript
复制
an alert is raised with value "johnny"

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

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2015-03-29 22:09:58

已经有几年了,但我想我需要保持信息的更新!

从PHP7开始,就可以创建匿名类了,所以你可以这样做:

代码语言:javascript
复制
<?php

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

    var_dump($child instanceof Foo); // true

?>

您可以阅读有关此in the manual的更多信息

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

票数 39
EN

Stack Overflow用户

发布于 2016-11-30 17:37:43

直到最近,我都是这样快速创建对象的。

代码语言:javascript
复制
$someObj = json_decode("{}");

然后:

代码语言:javascript
复制
$someObj->someProperty = someValue;

但现在我要说:

代码语言:javascript
复制
$someObj = (object)[];

然后像以前一样:

代码语言:javascript
复制
$someObj->someProperty = someValue;

当然,如果您已经知道属性和值,则可以在其中设置它们,如前所述:

代码语言:javascript
复制
$someObj = (object)['prop1' => 'value1','prop2' => 'value2'];

注意:我不知道哪个版本的PHP可以工作,所以你需要注意这一点。但我认为第一种方法(如果在构造时没有要设置的属性也很简短)应该适用于所有具有json_encode/json_decode的版本

票数 24
EN

Stack Overflow用户

发布于 2012-09-12 23:24:24

是的,这是可能的!使用这个简单的PHP Anonymous Object类。它的工作原理:

代码语言:javascript
复制
// define by passing in constructor
$anonim_obj = new AnObj(array(
    "foo" => function() { echo "foo"; }, 
    "bar" => function($bar) { echo $bar; } 
));

$anonim_obj->foo(); // prints "foo"
$anonim_obj->bar("hello, world"); // prints "hello, world"

// define at runtime
$anonim_obj->zoo = function() { echo "zoo"; };
$anonim_obj->zoo(); // prints "zoo"

// mimic self 
$anonim_obj->prop = "abc";
$anonim_obj->propMethod = function() use($anonim_obj) {
    echo $anonim_obj->prop; 
};
$anonim_obj->propMethod(); // prints "abc"

当然,这个对象是AnObj类的一个实例,所以它不是真正的匿名的,但它可以像JavaScript那样动态地定义方法。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6384431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档