Php 如何记录实现多个接口的类?
假设你有一节课Php 如何记录实现多个接口的类?,php,return-type,Php,Return Type,假设你有一节课 class View implements ViewInterface, TemplateInterface { private $template; public function setTemplate($template) { $this->template = $template; return $this; } } 然后,当您记录TemplateInterface并使用setTemplate(
class View implements ViewInterface, TemplateInterface {
private $template;
public function setTemplate($template) {
$this->template = $template;
return $this;
}
}
然后,当您记录TemplateInterface
并使用setTemplate($template)
方法时,您会将什么作为其返回类型
如果我把View
作为返回类型,然后我有不同的类实现TemplateInterface
,它们不是View
类型,那么我的API文档就错了
您是将返回类型设置为视图
、视图界面
、模板界面
,还是它们的混合
namespace Views\Interfaces;
interface TemplateInterface {
/* --------------------------------- */
public function getTemplate();
/* ---------------------------------
* @args: void
*
* @return: String - The name of the template.
*/
/* ------------------------------------------ */
public function setTemplate($template);
/* ------------------------------------------
* @arg 1: (String $template) - The name of the template file.
*
* @return: Not sure yet!!!
*/
}
界面应如下所示:
interface TemplateInterface
{
/**
* @return TemplateInterface
*/
public function setTemplate($template);
}
和视图类:
class View implements ViewInterface, TemplateInterface {
private $template;
/**
* @return TemplateInterface
* or (maybe better)
* @return View (as it implements TemplateInterface and is more specialized)
*/
public function setTemplate($template) {
$this->template = $template;
return $this;
}
}
是的,我在想,但是当你将一个对象注入到一个方法中,并且该对象实现了一个接口时,你把接口的名称作为该对象的类型提示放在方法签名中,所以我对返回类型有这样的感觉,为什么它会改变,并说对象类型而不是对象所属的接口implementing.TemplateInterface::setTemplate()的返回类型是什么??它返回
视图的一个实例。问题是,在我的API文档中,我放置了@return:View
,然后我有一个不同的类实现了TemplateInterface
,它将不是View
类型,所以API将是独立的。@David当然你可以自由使用自己的语法,但是你应该检查@David and(新版本)显示模板界面
代码