突发奇想,php能不能实现类似java 那种把interface 类当作方法的参数呢?
java 代码如下:
interface TestInterface{
void test(String param);
}
public class Test(){
private static TestInterface testInterface;
public static void setTestInterface(TestInterface testInterface){
this.testInterface=testInterface;
}
public static void action(){
this.testInterface.test("param") ;
}
public static void main(String[] args){
Test test =new Test();
test.setTestInterface(new TestInterface(){
@Override
public void test(String p){
System.out.print(p);
}
})
}
}
经过调查,在国内的帖子上没有找到类似的实现。只好求助于google 了。我在 stackoverflow 上发布了一个帖子,然而第二天被告知和其他问题重复了。我看了那个问题,和我想要的差不多。
stackoverflow上的回答。
经过修改,PHP 实现的代码如下:
<?php
// 定义interface
interface TestInterface{
public function test($p);
}
class Test{
// 定义类内全局变量
public TestInterface $testInterface;
// interface 变量的set 方法(也可以说是interface具体实现)
public function setTestInterface(TestInterface $interface){
$this->testInterface = $interface;
}
// 使用interface 的具体操作
public function action($p){
$this->testInterface->test($p);
}
// 测试方法
public function main($param){
$this->setTestInterface(new class implements TestInterface{
public function test($p){
echo $p;// 打印传递进来的参数
}
});
$this->action($param);
}
}
// 测试
$test = new Test();
$test->main("test1");
$test->main("test2");
输入结果是文章来源:https://www.toymoban.com/news/detail-577322.html
test1
test2
以上就是在php 中 interface 作为function函数的参数,怎么在方法中实现interface。文章来源地址https://www.toymoban.com/news/detail-577322.html
到了这里,关于PHP 在function中直接实例化interface,不用再class 后 implement的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!