对于标准方法,我知道可以在注释中指定返回类型,例如:
/**
* Load this entity from the database with the specified primary key.
* @param int $Key
* @return BaseEntity
*/
public static function Load($Key)
{ ... }
我想根据子类改变返回类型。类似的东西:
* @return __CLASS__
在其他语言中,这可以使用模板等完成。我有PHP的任何选项吗?
答案 0 :(得分:2)
没有。除非您编写代码来生成此代码。
这些是注释,它们不会改变代码运行的方式。它们可能由IDE用于代码提示,或者由PHPDoc用于生成文档。这些应用程序可能有办法做你想要的事情,检查他们的文档。但是,这些注释不会影响代码的运行方式。
答案 1 :(得分:1)
您希望使用BaseEntity
扩展您的SubclassEntity
并加强界面,可以这么说。但是,收紧您的界面打破您的界面。
从概念上讲,Load
应始终返回BaseEntity
,即使您碰巧知道它真的是SubclassEntity
。实际上,如果您知道返回的对象是SubclassEntity
,那么只需在以下后添加:
$obj = $container->Load(123); /* @var $obj SubclassEntity */