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

时间:2012-01-18 13:38:27

标签: php ide aptana code-completion

我目前正在使用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装饰后,它终于奏效了,但这看起来很糟糕!有没有更好的方法来使用一个解决方案并使其按预期工作?

1 个答案:

答案 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时,您将获得所有所有您所管理的类的可用元素的聚合。

希望有所帮助!