PhpStorm hint ArrayShape?



我使用https://blog.jetbrains.com/phpstorm/2020/10/phpstorm-2020-3-eap-4/#arrayshape将数组形状定义为常量,以便在项目中使用:

<?php
namespace mynamespaceApi;
use JetBrainsPhpStormArrayShape;
class CheckoutSessionLineItemMetadata implements MetadataInterface {
/**
* The ArrayShape of toArray().
*/
public const ARRAY_SHAPE = [
'order_item_id' => "string",
'order_id' => "string",
'product_variation_id' => "string",
];
/**
* Constructs a new object.
*
* @param string $order_item_id
* @param string $order_id
* @param string $product_variation_id
*/
public function __construct(
private string $order_item_id,
private string $order_id,
private string $product_variation_id) {
}
/**
* {@inheritDoc}
*/
#[ArrayShape(self::ARRAY_SHAPE)] public function toArray(): array {
return [
'order_item_id' => $this->order_item_id,
'order_id' => $this->order_id,
'product_variation_id' => $this->product_variation_id,
];
}
}

这被用来帮助我在创建事务时将一些数据传递给Stripe API。

在其他地方,我在一个单独的Stripe API响应提供的数据上循环,该响应包括具有该结构的元数据元素。我想提示数据采用这种数组形状,但我真的不确定如何(或是否(做到这一点

foreach ($data->display_items as $line_item) {
/** @var $metadata CheckoutSessionLineItemMetadata::ARRAY_SHAPE */
$metadata = $line_item->metadata;
// Ideally I'd get hinting that the associated keys are on this element.
}

这可能吗?我应该注意,我正在使用这个插件:https://github.com/klesun/deep-assoc-completion/issues/63,所以我可以用它来复制这个结构,但这将是一个遗憾,因为它已经在其他地方定义了。

好吧,在发布了一个带有深度assoc完成链接的编辑后,我想出了如何做到这一点。这是我想要的。

foreach ($data->display_items as $line_item) {
/** @var $metadata = CheckoutSessionLineItemMetadata::ARRAY_SHAPE */
$metadata = $line_item->metadata;
}

相关内容

  • 没有找到相关文章

最新更新