开发者

PHP StdClass - access fields as ->field or ->{'field'}

I'm working on this PHP code collaboration and it seems that some people access PHP StdClass fields like this

$body->head
开发者_开发问答

and others like

$body->{'head'}

As far as I can tell these are equivalent. Are they? Does it matter which is used? Which way would you prefer? Any quirks to look out for here?


They are equivalent. You only need the second version if you want to use abhorrent attribute names like:

$data->{'what * the ! thing'}

This sometimes happens if you convert pure data arrays into objects.

But there is also the double quotes version, which makes a bit more sense when you actually need variable attribute names (basically variable variables for objects):

$data->{"attr$index"}


I need to create class with abnormal property names like this {'field-name'}.

class myclass
{
    public {'field-name-with-minus-sign'} = "something";
}

Id doesnt work. Why? I dont want to use something like this:

$myclass = new stdClass();
$myclass->{'dumb-property-name'}

because i have a lot of properties like this.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜