如何调试接口 PHP 的函数



我在万磁王内部遇到了一个问题,在类别页面中,产品层价格似乎增加了两次税。我试图调试为什么会发生这种情况,所以浏览了一些文件:

模板显示正在使用renderAmountMinimal()函数:

$block->renderAmountMinimal();

此函数的块代码:

public function renderAmountMinimal()
{
    $id = $this->getPriceId() ? $this->getPriceId() : 'product-minimal-price-' . $this->getSaleableItem()->getId();
    $amount = $this->minimalPriceCalculator->getValue($this->getSaleableItem());
    print_r($amount);
    $amount = $this->minimalPriceCalculator->getAmount($this->getSaleableItem());
    if ($amount === null) {
        return '';
    }
    return $this->renderAmount(
        $amount,
        [
            'display_label'     => __('As low as'),
            'price_id'          => $id,
            'include_container' => false,
            'skip_adjustments' => true
        ]
    );
}

返回对象中的错误值 $amount 。奇怪的是,getValue(( 似乎显示了正确的数量。然后我想看看$this->minimalPriceCalculator,看看getAmount中发生了什么,但是我不确定如何调试/查看这里发生了什么,因为文件如下所示:

namespace MagentoCatalogPricingPrice;
use MagentoFrameworkPricingSaleableInterface;
use MagentoFrameworkPricingAmountAmountInterface;
interface MinimalPriceCalculatorInterface
{
/**
 * Get raw value for "as low as" price
 *
 * @param SaleableInterface $saleableItem
 * @return float|null
 */
public function getValue(SaleableInterface $saleableItem);
/**
 * Return structured object with "as low as" value
 *
 * @param SaleableInterface $saleableItem
 * @return AmountInterface|null
 */
public function getAmount(SaleableInterface $saleableItem);
}

我已经检查了SaleableInterface但它看起来与上面相似,以及之后的每个文件。这个问题似乎很深,只是想知道在哪里看,这样我就能明白为什么会出错?

您可以按照本教程使用 PHPStorm 进行调试(或作为其他 IDE 的指导(。

magento2 中的想法是,此接口用于依赖注入,其中 Magento 框架为您初始化它们。因此,通过如上所述运行调试器,您将被定向到生成的类。

如果您只想查看类,则可以在var/generation/Magento的根文档中访问服务器上的文件,并在那里搜索该文件。这通常是在 CLI 中运行magento setup:di:compile时生成的。

最新更新