PhpStorm中如何复用ArrayShape类常量为数组添加类型提示?
解决方案
目前PhpStorm原生不支持直接在@var注解中将ArrayShape常量作为类型引用,你可以通过以下两种无重复定义的方式实现结构复用:
方案1:原生无插件(推荐)
你已经在CheckoutSessionLineItemMetadata::toArray()方法上定义了对应的ArrayShape注解,可以直接引用该方法的返回值作为变量类型,PhpStorm原生支持该语法:
foreach ($data->display_items as $line_item) { // 注意结尾的括号不可省略,代表取该方法的返回值类型 /** @var $metadata \my\namespace\Api\CheckoutSessionLineItemMetadata::toArray() */ $metadata = $line_item->metadata; // 此处可直接获得order_item_id、order_id、product_variation_id的键提示 }
如果已经在当前文件引入了CheckoutSessionLineItemMetadata类的命名空间,可以省略前缀直接写CheckoutSessionLineItemMetadata::toArray()。
方案2:配合已安装的deep-assoc-completion插件
该插件支持直接引用ArrayShape常量作为数组结构定义,语法如下:
foreach ($data->display_items as $line_item) { /** @var $metadata array<shape=\my\namespace\Api\CheckoutSessionLineItemMetadata::ARRAY_SHAPE> */ $metadata = $line_item->metadata; // 插件会解析常量内的数组结构,给出对应键的提示 }
内容的提问来源于stack exchange,提问作者Matthew Weiner
相关产品推荐
相关产品推荐

