我们知道,在JavaScript中创建匿名对象很容易,如下面的代码:
var object = {
p : "value",
p1 : [ "john", "johnny" ]
};
alert(object.p1[1]);
Run Code Online (Sandbox Code Playgroud)
输出:
an alert is raised with value "johnny"
Run Code Online (Sandbox Code Playgroud)
在PHP的情况下可以应用相同的技术吗?我们可以在PHP中创建匿名对象吗?
在PHP中,我可以很容易地指定数组文字:
array(
array("name" => "John", "hobby" => "hiking"),
array("name" => "Jane", "hobby" => "dancing"),
...
)
Run Code Online (Sandbox Code Playgroud)
但是如果我想要一些对象呢?如何在PHP中指定对象文字?即在JavaScript中它将是:
[
{name: "John", hobby: "hiking"},
{name: "Jane", hobby: "dancing"}
]
Run Code Online (Sandbox Code Playgroud) 我应该补充一点,虽然 KVP 数组工作得很好,但在进行 OOP 时我更喜欢对象,因为它$foo->bar->foo看起来比$foo->bar['foo']我认为的更干净。
$foo = array('foo' => 'bar');PHP 有一种很好的方法,可以通过甚至新的 5.4 括号语法:来创建带有预填充数据的数组$foo = ['foo' => 'bar'],但对象 ( ) 似乎不存在相同的语法stdClass。
数组演示:
<?php
class Foo {
public $bar = array(
'foo' => 'bar',
'bar' => 'foo'
);
}
$foo = new Foo;
var_dump($foo->bar);
/*
array(2) {
["foo"]=>
string(3) "bar"
["bar"]=>
string(3) "foo"
}
*/
?>
Run Code Online (Sandbox Code Playgroud)
太棒了 - 如果我们想在不使用 a 的情况下__construct对对象执行相同的操作怎么办?
我不知道我是否可以在这里提出这个问题.我经常弄错,但......
我每个人都想在PHP上使用"数组json样式" $a = [1, 2, $value];.但我读到PHP开发人员讨厌这个想法,因为有太多人想要,他们认为最好不要提供这个功能.
问题是:为什么? 我认为这可能与某些现有功能相冲突,但我想不到任何功能.
附加:有人知道什么是PHP开发功能列表(在哪里提供和讨论)?