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


Aptana Studio 3 PHP code completion for mixed types?

我目前在Aptana Studio 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的返回。

如果CreateExample文档设置正确,设置$x = CreatePerson( 'Person' );将获得CA。

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

我假设你知道所有可能的返回类型,所以在这种情况下,你可以管道CreateExample@return中的那些类型:

@return Person|OtherClass|ThirdClass

现在,当您编写代码辅助$x时,您将从中获得所有可用元素的聚合,所有都是您管道化的类。

希望能有所帮助!