PHP中带有类型提示的动态返回类型?

时间:2009-12-21 18:34:47

标签: php eclipse

对于标准方法,我知道可以在注释中指定返回类型,例如:

/**
 * Load this entity from the database with the specified primary key.
 * @param int $Key
 * @return BaseEntity
 */
public static function Load($Key)
{ ... }

我想根据子类改变返回类型。类似的东西:

 * @return __CLASS__

在其他语言中,这可以使用模板等完成。我有PHP的任何选项吗?

2 个答案:

答案 0 :(得分:2)

没有。除非您编写代码来生成此代码。

这些是注释,它们不会改变代码运行的方式。它们可能由IDE用于代码提示,或者由PHPDoc用于生成文档。这些应用程序可能有办法做你想要的事情,检查他们的文档。但是,这些注释不会影响代码的运行方式。

答案 1 :(得分:1)

您希望使用BaseEntity扩展您的SubclassEntity并加强界面,可以这么说。但是,收紧您的界面打破您的界面。

从概念上讲,Load应始终返回BaseEntity,即使您碰巧知道它真的是SubclassEntity。实际上,如果您知道返回的对象是SubclassEntity,那么只需在以下后添加:

$obj = $container->Load(123); /* @var $obj SubclassEntity */