> 文章列表 > php interface

php interface

php interface

介绍 PHP 接口

PHP 接口是一种“协议”,它规定了类中必须包含哪些方法。实现这些方法的类就可以使用该接口。接口可以从所实现类的角度来看,看做是一种协议或者合同,类必须遵循这个契约。

创建 PHP 接口

要创建接口,需要使用 interface 关键字。 语法是简单的:

interface interface_name { public function method1(); public function method2($var1, $var2); public function method3(); ...}

接下来,我们可以在类中实现接口,这是通过 implements 操作符来实现的。

实现 PHP 接口

实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。应当在实现接口的类中调用所有方法。

接下来的例子演示了如何实现一个接口。我们创建了一个 iTemplate 接口,然后实现了接口的实体类。实体类中必须定义接口中的所有方法:

interface iTemplate { public function setVariable($name, $var); public function getHtml($template);}// 实现接口// 实现多个接口时,接口之间用逗号分隔。class Template implements iTemplate{ private $vars = array(); public function setVariable($name, $var){ $this->vars[$name] = $var; } public function getHtml($template){ foreach($this->vars as $name=>$value){ $template = str_replace('{' . $name . '}', $value, $template); } return $template; }}

使用 PHP 接口

当实现一个接口时,所有的方法都必须是公有的。这是接口的规定。

接下来的例子演示了如何使用 iTemplate 接口的实体类 Template:

// 实例化对象$template = new Template;// 设置变量$template->setVariable("name", "菜鸟教程");$template->setVariable("url", "http://www.runoob.com");// 获取 HTML 并输出echo $template->getHtml("{name}{name}");

继承 PHP 接口

一个接口能够继承另一个接口,与类的继承使用 extends 关键字类似,接口使用 extends 关键字。

父接口中定义的所有方法子接口都必须保留。

interface a{ public function foo();}interface b extends a{ public function baz(Baz $baz);}// 合法,所有方法都被实现class c implements b{ public function foo(){ } public function baz(Baz $baz){ }}

如果将示例中的接口 b 中的 baz() 方法的参数 Baz $baz 更改为 Foo $foo,那么将会得到以下错误:

Fatal error: Class c cannot implement b - interface b (incompatible with a) in...

互联网百科