为什么要静态调用接口属性并作为参数传递

时间:2019-01-14 18:08:38

标签: php oop

我最近遇到过一些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 :(得分:1)

它允许您定义每个实现将共享和使用的值/常量,例如:

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

    public function makeRequest($type);
}

...

$req = new RequestImpl();
$req->makeRequest(HttpRequest::POST);