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

如何正确返回TestHeader对象?TestHeaders类方法传参问题

解决方案

你之前的错误在于给TestHeader构造函数的第一个参数传了错误的类型(new TestHeader()),后续改成new TestHeaders()虽然类型匹配,但没必要创建新的TestHeaders实例——直接传递当前的TestHeaders对象(也就是$this)即可,这样既满足TestHeader构造函数的参数要求,又能保证逻辑的正确性。

修改后的TestHeaders类代码如下:

class TestHeaders
{
    public function profile(int $userId): TestHeader
    {
        // 传递当前TestHeaders实例$this,而非新建TestHeaders对象
        return new TestHeader($this, 'profile.php');
    }

    // 补充TestHeader中依赖的setHeader方法(原代码未实现,需补充保证逻辑完整)
    public function setHeader(string $header): void
    {
        // 此处可实现设置HTTP头的逻辑,例如:
        header($header);
    }
}

原TestHeader类保持不变:

class TestHeader
{
    private TestHeaders $headers;

    public function __construct(TestHeaders $headers, public string $url)
    {
        $this->headers = $headers;
    }

    public function send(): void
    {
        $this->headers->setHeader("Location: $this->url");
    }
}

修改后,调用TestHeaders::profile()会创建关联当前TestHeaders实例的TestHeader对象,调用send()方法时也能正确触发当前实例的setHeader逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:05:14