如何正确返回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
相关产品推荐
相关产品推荐

