我在使用$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?如何从respond()
调用foo()
方法?
答案 0 :(得分:0)
你不能在STATIC方法中使用方法,因为那样你就会破坏encapsulation of OO。
答案 1 :(得分:0)
首先,您使用$foo
作为静态,因此将其声明为静态,并且更清楚......
您不能在静态方法上使用$this
...
您可以将respond()
设为静态,然后使用self::respond()
答案 2 :(得分:0)
您无法在$this
中使用foo
,您也必须定义respond
静态:
class UserController {
public function show() {
// do something
return Response::foo($array);
}
}
class Response {
private static function respond() {
// do something
}
public static function foo($array) {
// do
return self::respond();
}
}