如何在界面中注释此stdClass属性?

时间:2020-09-03 13:11:21

标签: php annotations jetbrains-ide

我正在处理提供具有以下结构数据的API:

stdClass Object
(
    [id] => 2592
    [title] => Ακουστικά Bluetooth με Θήκη Φόρτισης SPM BN22-7S
    [features] => stdClass Object
        (
            [675] => stdClass Object
                (
                    [feature_name] => Τύπος Ακουστικών
                    [feature_value_sel] => Earphones
                    [feature_id] => 675
                    [variant_id] => 1809
                )

            [676] => stdClass Object
                (
                    [feature_name] => Σύνδεση
                    [feature_value_sel] => Ασύρματα
                    [feature_id] => 676
                    [variant_id] => 1811
                )

            [162] => stdClass Object
                (
                    [feature_name] => Χρώμα
                    [feature_value_sel] => Λευκό
                    [feature_id] => 162
                    [variant_id] => 1695
                )

            [27] => stdClass Object
                (
                    [feature_name] => Μάρκα
                    [feature_value_sel] => General
                    [feature_id] => 27
                    [variant_id] => 2864
                )

        )

)

然后我将基于该对象创建一个接口MyInterface,以便我可以通过自动完成功能轻松地注释和处理对象,并确保我不会错过任何内容。

例如,我可以在界面中注释它具有这样的属性

* @property string $title

随后,当我处理数据时,只要声明变量的类型为MyInterface,就可以自动补全并输入提示

/** @var MyInterface **/

我的问题是如何处理$features属性,该属性是stdClass的实例而不是数组,但也是相同类型的对象的集合。您可以看到它包含id作为属性,然后包含另一个stdClass对象。

我最初的想法是为Feature对象创建一个接口,然后将该属性标记为

@property FeatureInterface[] $features

但是在调试它之后,我注意到结构类似于上面,而不是数组。我仍然可以通过foreach循环对其进行迭代。

是否可以在该用例中使用注释?

0 个答案:

没有答案