如何解决json_decode-d 对象的 PHP 文档块
我从 PHP 代码中的 JSON 字符串获取对象。我希望我的 IDE (NetBeans) 知道对象的参数,而无需为它们创建特殊的类。
我可以吗?
它看起来像:
$obj = json_decode($string);
/**
* @var $obj {
* @property int $id
* @property string $label
* }
*/
解决方法
当我使用 PHP 7 时,我可以定义匿名类。
所以,我的解决方案是:
$obj = (new class {
/**
* @property int $id
*/
public /** @var string */ $label;
public function load(string $string): self
{
$data = json_decode($string,true);
foreach ($data as $key => $value) {
$this->{$key} = $value;
}
return $this;
}
})->load($string);
echo $obj->id;
echo $obj->label;
我认为这是一道很棒的意大利面。
,这是它的结构化版本
首先,您在 helpers
文件夹中的某处创建一个类
<?php
namespace App\Helpers;
use function json_decode;
class JsonDecoder
{
public function loadString(string $string): self
{
$array = json_decode($string,true);
return $this->loadArray($array);
}
public function loadArray(array $array): self
{
foreach ($array as $key => $value) {
$this->{$key} = $value;
}
return $this;
}
}
那么,你要小心使用它
$obj= (new class() extends JsonDecoder {
public /** @var int */ $id;
public /** @var string */ $label;
});
$obj->loadString($string);
echo $obj->id;
echo $obj->label;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。