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

如何从控制器向类库传递customer_id与date_preset参数?

问题分析与解决方案

首先你这段代码存在两个核心问题:

  1. PHP中类的const是编译期常量,只能赋值字面量或常量表达式,不能用$customer_id这种动态变量赋值,这么写会直接触发语法错误。
  2. 类库的静态方法customer()没有接收控制器传来的参数,根本无法获取到customer_id和date_preset的值。

下面给你两种可行的修改方案:


方案一:给静态方法传递参数(最直接的实现)

既然customer()是静态方法,直接把控制器里的参数传进去即可,类里无需定义无效的const:

修改后的类库代码

class GoogleAdsCustomerInfoLib {
    public static function customer($customerId, $datePreset) {
        // 这里直接使用传入的参数编写业务逻辑
        // 示例逻辑:
        return [
            'customer_id' => $customerId,
            'date_preset' => $datePreset
        ];
    }
}

修改后的控制器方法

public function customer(){
    $data = [
        'customer_id' => '123456789',
        'date_preset' => 'LAST_7_DAYS'
    ];

    // 直接将参数传入静态方法
    $customer = GoogleAdsCustomerInfoLib::customer($data['customer_id'], $data['date_preset']);

    return $customer;
}

方案二:用实例属性+构造函数(适合多方法复用参数的场景)

如果类库有多个方法需要用到这两个值,可以把它们作为实例属性,通过构造函数注入:

修改后的类库代码

class GoogleAdsCustomerInfoLib {
    private $customerId;
    private $datePreset;

    // 构造函数接收参数并赋值给实例属性
    public function __construct($customerId, $datePreset) {
        $this->customerId = $customerId;
        $this->datePreset = $datePreset;
    }

    public function customer() {
        // 直接使用实例属性编写业务逻辑
        return [
            'customer_id' => $this->customerId,
            'date_preset' => $this->datePreset
        ];
    }

    // 其他需要用到这两个值的方法,也可以直接调用$this->customerId、$this->datePreset
}

修改后的控制器方法

public function customer(){
    $data = [
        'customer_id' => '123456789',
        'date_preset' => 'LAST_7_DAYS'
    ];

    // 实例化类时传入参数
    $googleAdsLib = new GoogleAdsCustomerInfoLib($data['customer_id'], $data['date_preset']);
    $customer = $googleAdsLib->customer();

    return $customer;
}

注意:PHP的const从设计上就不支持动态赋值,所以不要试图用它来接收控制器传来的动态值,核心思路就是通过参数传递的方式把控制器的值给到类库使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:40:19