【发布时间】:2015-04-23 15:00:01
【问题描述】:
我在使用$this 时遇到了一些问题。
我有一个控制器:
class UserController {
public function show() {
// prepare $array from database
if ok
return Response::toJson($array);
else
return Response::respondWithError("errorMessage");
}
}
还有响应类:
class Response
{
private function respond($array)
{
//do som
}
public function toJson($array)
{
// do som
$this->respond($array);
}
public function respondWithError($message)
{
// do som
$this->respond($array);
}
}
我得到了错误:
调用未定义的方法 UserController::respond()
为什么$this 指的不是Response 类而是UserController?以及如何从foo() 调用respond() 方法?
【问题讨论】:
-
您正在静态调用
Response::foo,然后$this->respond();正在尝试访问Response实例的方法。 -
所以我必须返回 Response::respond() ?
-
不清楚你在做什么,但你可以
return self::respond(); -
我编辑了代码。我正在尝试创建一个处理 json 响应的类,从应用程序的每个控制器调用。所以我想将数据(或错误)提供给 Response 类,并让它在内部管理并以 json 形式返回。我制作了两个静态方法并使用了 self:: 并且它有效。只是想知道这是否是一个好方法。
-
你知道
$this是什么以及static对方法做了什么吗?