PHP是否具有对象的简短语法?

Pim*_*ger 35 php object

在javascript中,您可以轻松创建对象和数组,如下所示:

var aObject = { foo:'bla', bar:2 };
var anArray = ['foo', 'bar', 2];
Run Code Online (Sandbox Code Playgroud)

PHP中类似的东西可能吗?
我知道你可以使用数组函数轻松创建一个数组,这几乎不是javascript语法的工作,但有没有类似的语法来创建对象?或者我应该只使用关联数组?

$anArray = array('foo', 'bar', 2);
$anObjectLikeAssociativeArray = array('foo'=>'bla',
                                      'bar'=>2);
Run Code Online (Sandbox Code Playgroud)

总结一下:
PHP是否有像对象创建这样的javascript或我应该只使用关联数组?

Cre*_*esh 47

对于简单对象,您可以使用关联数组语法和强制转换来获取对象:

<?php
$obj = (object)array('foo' => 'bar');
echo $obj->foo; // yields "bar"
Run Code Online (Sandbox Code Playgroud)

但是看着你可以很容易地看出它是多么无用(如果你的结构很简单,你就把它留作一个关联数组).

  • `$ goose-> foo`比`$ goose ['foo']更漂亮.&#8756; 有用. (10认同)

Gum*_*mbo 42

有人建议实现这种数组语法.但它被拒绝了.


更新     数组的缩写语法已被重新讨论,接受,现在正在使用PHP 5.4发布.

但仍然没有对象的简写.您可能需要显式转换为对象:

$obj = (object) ['foo'=>'bla', 'bar'=>2];
Run Code Online (Sandbox Code Playgroud)

  • 这已在PHP 5.4中实现. (6认同)
  • 糟糕,它没有成功. (5认同)
  • 我想知道是否会实现对象的速记符号?我一直使用stdClasses,但与javascript对象文字相比,它们感觉很尴尬. (4认同)
  • @Gumbo短数组语法使用`=>`而不是`:`.为你编辑答案.:) (2认同)

Mat*_*hew 10

从PHP 5.4开始,您可以这样做:

$array = ['foo'=>'bla', 'bar'=>2];
Run Code Online (Sandbox Code Playgroud)

它并不短,但如果您需要使用大量硬编码嵌套数组(这并不完全不常见),您会很感激.

如果你想要一个对象,你仍然需要转换每个数组:

$object = (object) ['foo'=>'bla', 'bar'=>2];
Run Code Online (Sandbox Code Playgroud)


San*_*ahu 7

根据新的PHP语法,

您可以使用

$array = [1,2,3];
Run Code Online (Sandbox Code Playgroud)

对于关联数组

$array = ['name'=>'Sanket','age'=>22];
Run Code Online (Sandbox Code Playgroud)

对于对象,您可以将数组类型转换为对象

$object = (object)['name'=>'Sanket','age'=>22];
Run Code Online (Sandbox Code Playgroud)