PHP docblock for json_decode-d objects



我在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 AppHelpers;
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;

相关内容

  • 没有找到相关文章

最新更新