You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2集成Paytm支付时前端购物车出现动态属性弃用错误

PHP 8.2.7下Magento 2集成Paytm模块遇动态属性弃用错误,加注解无效怎么办?

环境与操作背景

  • PHP版本:8.2.7
  • Magento版本:兼容2.3+的版本
  • 操作流程:
    • 下载Paytm仓库ZIP包,解压后把Magento_V2.3+/app/code/One97文件夹复制到自己的Magento商城目录

    • 执行了这几个命令:

      • php bin/magento module:enable One97_Paytm
      • php bin/magento setup:upgrade
      • php bin/magento setup:static-content:deploy
    • 后台配置完,访问前端购物车就报错:

      Exception #0 (Exception): Deprecated Functionality: Creation of dynamic property One97\Paytm\Helper\Data::$stockRegistry is deprecated in /var/www/html/magento_multiple/app/code/One97/Paytm/Helper/Data.php on line 48

    • 试过加#[AllowDynamicProperties]注解,但问题没解决

解决办法

1. 先检查注解位置是否正确

#[AllowDynamicProperties]必须直接放在Data类的上方,不能塞到方法里或者其他位置,正确写法示例:

#[AllowDynamicProperties]
class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    // 类内部代码
}

位置错了的话,注解根本不会生效。

2. 直接声明类属性(最稳妥方案)

PHP 8.2开始严格禁止未声明的动态属性,与其依赖注解绕开限制,不如直接在Helper类里显式声明$stockRegistry属性:
打开/var/www/html/magento_multiple/app/code/One97/Paytm/Helper/Data.php,在类内部添加属性声明:

class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    // 根据实际类型调整属性修饰符,这里用protected示例
    protected $stockRegistry;

    // 原构造函数及其他方法
    public function __construct(...)
    {
        // 确保构造函数中初始化该属性(如果之前是动态赋值的话)
        $this->stockRegistry = ...;
    }
}

更符合Magento规范的做法是通过依赖注入注入该对象,而非动态赋值:

use Magento\CatalogInventory\Api\StockRegistryInterface;

class Data extends \Magento\Framework\App\Helper\AbstractHelper
{
    protected $stockRegistry;

    public function __construct(
        \Magento\Framework\App\Helper\Context $context,
        StockRegistryInterface $stockRegistry // 加入依赖注入参数
    ) {
        parent::__construct($context);
        $this->stockRegistry = $stockRegistry;
    }
}

3. 修改后清缓存并重部署静态资源

代码修改完成后,必须执行以下命令确保生效:

php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:static-content:deploy -f

4. 检查模块兼容性

如果上述方法都无效,大概率是当前使用的Paytm模块不兼容PHP 8.2+,可以联系模块开发者获取兼容版本,或者自行修改模块代码适配PHP 8.2的特性。

内容的提问来源于stack exchange,提问作者Grace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 19:52:51