我正在处理提供具有以下结构数据的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循环对其进行迭代。
是否可以在该用例中使用注释?