Вызов неопределенного метода при использовании $ this

У меня проблемы с использованием $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 :: response ()

Зачем $this не относится к классу Response, но UserController? И как я могу назвать respond() метод из foo()?

-2

Решение

Во-первых, вы используете $foo как статический, так что объявите его как статический, и это более понятно …
Вы не можете использовать $this по статическому методу …
ты мог бы сделать respond() статический, а затем использовать self::respond()

0

Другие решения

Вы не можете использовать методы внутри метода STATIC, потому что таким образом вы сломаете инкапсуляция ОО.

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();
}
}
0
По вопросам рекламы [email protected]