PHP通过JSON格式定义字面量对象

PHPer都知道PHP是不支持字面量了,至少目前版本都不支持。比如,在JavaScript中可以这样定义object

var o = {'name': 'qttc', 'url': 'www.qttc.net'};
console.log(o.name);

虽然JSON并不等同于JavaScript中的Object格式,但很接近

Python中定义字典,也可以这样定义:

o = {'name': 'qttc', 'url': 'www.qttc.net'}
print o['name']

但在PHP中这么定义object:

$a = {"name": "qttc", "url": "www.qttc.net"};

会报错:

[root@lee www]# php a.php 
PHP Parse error:  syntax error, unexpected '{' in /data0/htdocs/www/a.php on line 4

我们可以借用JSON格式,用引号把包下然后再json_decoude就好。

$a = '{"name" : "qttc", "url": "www.qttc.net"}';
$a = json_decode($a);
print_r($a);

执行结果

[root@lee www]# php a.php 
stdClass Object
(
  [name] => qttc
  [url] => www.qttc.net
)

由于PHP不支持字面量或者匿名函数,所以使用以上定义的方法定义object时不能添加function到object里,还可以这样添加数组元素:

$a = '{"name": "qttc", "url": "www.qttc.net" , "arr": ["zhangsan","lisi"]}';
$a = json_decode($a);
print_r($a);

执行结果

[root@lee www]# php a.php 
stdClass Object
(
  [name] => qttc
  [url] => www.qttc.net
  [arr] => Array
    (
      [0] => zhangsan
      [1] => lisi
    )
)
分享

TITLE: PHP通过JSON格式定义字面量对象

LINK: https://www.qttc.net/344-php-define-object-via-json.html

NOTE: 原创内容,转载请注明出自琼台博客