微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

json_decode-d 对象的 PHP 文档块

如何解决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 举报,一经查实,本站将立刻删除。