我最近遇到过一些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);
在我刚刚将其作为演示输入时,可能存在一些语法错误,我的问题更多是关于为什么会实施(甚至应该这样做)这样的事情,而不是上面示例中的任何小错误。
答案 0 :(得分:1)
它允许您定义每个实现将共享和使用的值/常量,例如:
interface HttpRequest {
const GET = 1;
const POST = 2;
...
public function makeRequest($type);
}
...
$req = new RequestImpl();
$req->makeRequest(HttpRequest::POST);