正如我们所知,在JavaScript中创建匿名对象很容易,如下面的代码所示:
var object = {
p : "value",
p1 : [ "john", "johnny" ]
};
alert(object.p1[1]);
输出:
an alert is raised with value "johnny"
同样的技术也可以应用到PHP中吗?我们可以在PHP中创建匿名对象吗?
发布于 2015-03-29 22:09:58
已经有几年了,但我想我需要保持信息的更新!
从PHP7开始,就可以创建匿名类了,所以你可以这样做:
<?php
class Foo {}
$child = new class extends Foo {};
var_dump($child instanceof Foo); // true
?>
您可以阅读有关此in the manual的更多信息
但我不知道它的实现与JavaScript有多相似,所以在JavaScript和PHP中的匿名类之间可能会有一些区别。
发布于 2016-11-30 17:37:43
直到最近,我都是这样快速创建对象的。
$someObj = json_decode("{}");
然后:
$someObj->someProperty = someValue;
但现在我要说:
$someObj = (object)[];
然后像以前一样:
$someObj->someProperty = someValue;
当然,如果您已经知道属性和值,则可以在其中设置它们,如前所述:
$someObj = (object)['prop1' => 'value1','prop2' => 'value2'];
注意:我不知道哪个版本的PHP可以工作,所以你需要注意这一点。但我认为第一种方法(如果在构造时没有要设置的属性也很简短)应该适用于所有具有json_encode/json_decode的版本
发布于 2012-09-12 23:24:24
是的,这是可能的!使用这个简单的PHP Anonymous Object类。它的工作原理:
// 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那样动态地定义方法。
https://stackoverflow.com/questions/6384431
复制相似问题