0

我有以下类层次结构:MDLUser继承自MDLPersistentObject

MDLPersistentObject我有一个返回数组的静态方法。在MDLUser我覆盖了静态方法,使其返回MDLPersistentObject' 数组,添加自己的数据,然后返回新数组。

但是当我parent::myArrayReturningMethod()在里面调用它时,MDLUser它只会返回MDLUser' 的实现(即缺少来自 的数组数据MDLPersistentObject。但是,如果我把它称为不好的做法MDLPersistentObject::myArrayReturningMethod(),那么它会返回我所期望的。

调用静态方法的父实现不是parent::正确的后期静态绑定方法吗?

如果您想知道我的代码是什么样的:

MDLPersistentObject 的方法:

static public function Neo4j_Labels_In_Client( Everyman\Neo4j\Client $client )
{
    //
    //  Create a label called `MDLPersistentObject`
    //

    $mdlobject_label = $client->makeLabel( get_called_class() );


    //
    //  Return the label in an array
    //

    $labels = Array(
        $mdlobject_label
    );

    return $labels;
}

MDLUser的方法:

static public function Neo4j_Labels_In_Client( Everyman\Neo4j\Client $client )
{
    //
    //  Get the parent labels
    //

    $labels = parent::Neo4j_Labels_In_Client( $client );

    //
    //  Add the new labels
    //

    $user_label = $client->makeLabel( get_called_class() );

    array_push( $labels, $user_label );


    //
    //  Return labels
    //

    return $labels;
}
4

0 回答 0