Зачем вызывать свойства интерфейса статически и передавать в качестве параметров - PullRequest
0 голосов
/ 14 января 2019

Недавно я натолкнулся на некоторый PHP, в котором были определены константы в интерфейсе, которые затем вызывались статически и передавались методу в объекте, реализующем этот интерфейс.

Какую цель это послужит? Я предполагаю, что значения, которые будут переданы в этот метод, будут затем обновляться / изменяться в одном месте, но нет никакого способа обеспечить это с помощью подсказки типа для параметров этого метода, чтобы любая вещь могла быть передана?

Пример:

interface test_inter {
  const foo = "bar"
}

class test_obj implements test_inter {
  public function test_func( string $test_param ) {
  }
}

$obj = new test_obj();
$obj->test_func(test_inter::foo);

Возможно, там есть некоторые синтаксические ошибки, так как я только что набрал его в качестве демонстрации, мой вопрос больше о том, почему нечто подобное будет реализовано (или даже должно быть?), А не о каких-то небольших ошибках в приведенном выше примере.

1 Ответ

0 голосов
/ 14 января 2019

Это позволяет вам определять значения / константы, которые каждая реализация будет использовать и совместно использовать, например ::

interface HttpRequest {
    const GET  = 1;
    const POST = 2;
    ...

    public function makeRequest($type);
}

...

$req = new RequestImpl();
$req->makeRequest(HttpRequest::POST);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...