У меня есть следующая иерархия классов: 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;
}
Задача ещё не решена.
Других решений пока нет …