AptanaStudio 3混合类型的PHP代码完成?

AptanaStudio 3混合类型的PHP代码完成?,php,ide,aptana,code-completion,Php,Ide,Aptana,Code Completion,我目前正在AptanaStudio 3(目前看来是3.0.7)中使用PHP。我有一个函数,它将返回另一个对象的实例,但该对象是在运行时确定的。因此,不可能用相关注释装饰功能。相反,我正在寻找一个干净的解决方案,用代码完成的标记来装饰调用方。我该怎么做 /** * Represents a person. */ class Person { /** * Contains the identifier. * * @var int */ pu

我目前正在AptanaStudio 3(目前看来是3.0.7)中使用PHP。我有一个函数,它将返回另一个对象的实例,但该对象是在运行时确定的。因此,不可能用相关注释装饰功能。相反,我正在寻找一个干净的解决方案,用代码完成的标记来装饰调用方。我该怎么做

/**
 * 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进行装饰后,它终于起作用了,但这看起来很可怕!没有更好的方法使用一种解决方案并使其按预期工作吗?

好的。首先,我相信
CreateExample('Person')instanceof Person
只需将一个基本布尔值赋给
$x
。这也是您无法在
$x
上获得代码帮助的原因,即使您编辑
CreateExample
返回到
@return Person

设置
$x=CreatePerson('Person')CreateExample
文档设置正确,code>将为您获取CA

现在,由于您有一个混合返回类型,一个解决方案是使用
@var
doc,就像您所做的那样。但是,您可以使用另一种解决方案

我假设您知道所有可能的返回类型,因此在这种情况下,您可以在
CreateExample
@return:

@return Person | OtherClass | third class

现在,当您编写代码assist
$x
时,您将获得来自所有管道类的所有可用元素的聚合

希望有帮助