有一個Api Client類指定返回特定類的方法。方法名稱與被調用的類的名稱相同。問題:有什么辦法可以簡化這個過程嗎?我知道魔術方法__call(),但我不明白是否可以通過它實現同樣的事情?還是會更糟?class ApiClient{ private RequestController $controller; public function __construct(string $region) { $this->controller = new RequestController($region); } public function user(): User { return new User($this->controller); } public function rating(): Rating { return new Rating($this->controller); } public function weapon(): Weapon { return new Weapon($this->controller); } public function achievement(): Achievement { return new Achievement($this->controller); }}
1 回答

婷婷同學_
TA貢獻1844條經驗 獲得超8個贊
最小的例子:
class ApiClient
{
private RequestController $controller;
public function __construct(string $region)
{
$this->controller = new RequestController($region);
}
public function __call($methodName, $arguments)
{
// I'm skipping checks that class exists or anything else
// Also cause class names are case INsensitive you can just:
return new $methodName($this->controller);
// Or if case-sensitivity matters
$methodName = ucfirst($methodName);
return new $methodName($this->controller);
}
}
- 1 回答
- 0 關注
- 108 瀏覽
添加回答
舉報
0/150
提交
取消