У меня проблемы с использованием $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()
?
Во-первых, вы используете $foo
как статический, так что объявите его как статический, и это более понятно …
Вы не можете использовать $this
по статическому методу …
ты мог бы сделать respond()
статический, а затем использовать self::respond()
Вы не можете использовать методы внутри метода STATIC, потому что таким образом вы сломаете инкапсуляция ОО.
Вы не можете использовать $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();
}
}