我目前正在使用PHP在Aptana Studio 3(目前看来是3.0.7)工作。我有一个函数将返回另一个对象的实例,但该对象是在运行时确定的。因此,无法使用相关注释来修饰函数。相反,我正在寻找一个干净的解决方案来解决调用程序的代码完成代码。我怎么能这样做?
/**
* Represents a person.
*/
class Person
{
/**
* Contains the identifier.
*
* @var int
*/
public $PersonId;
/**
* Contains the string.
*
* @var string
*/
public $Name;
}
/**
* A simple factor example.
*
* @return mixed
*/
function CreateExample( $zClass )
{
return new $zClass();
}
/* @var $x Person */
$x = CreateExample( 'Person' ) instanceof Person;
用评论和instanceof装饰后,它终于奏效了,但这看起来很糟糕!有没有更好的方法来使用一个解决方案并使其按预期工作?
答案 0 :(得分:2)
确定。首先,我相信CreateExample( 'Person' ) instanceof Person
只是将一个原始布尔值分配给$x
。这也是您$x
无法获得代码帮助的原因,即使您将CreateExample
的返回值修改为@return Person
。
设置$x = CreatePerson( 'Person' );
会为您提供CA,以防您正确设置CreateExample
文档。
现在,由于您有一个混合返回类型,因此一个解决方案是使用@var
doc,就像您一样。但是,您可以使用另一种解决方案。
我假设你知道所有可能的返回类型,所以在这种情况下你可以 pipe CreateExample
@return中的那些类型:
@return Person|OtherClass|ThirdClass
现在,当您使用代码辅助$x
时,您将获得所有所有您所管理的类的可用元素的聚合。
希望有所帮助!