protected function buildPrototypeHierarchy()
{
if (!isset($this->objectTree['__prototypes'])) {
return;
}
foreach ($this->objectTree['__prototypes'] as $prototypeName => $prototypeConfiguration) {
$prototypeInheritanceHierarchy = array();
$currentPrototypeName = $prototypeName;
while (isset($this->objectTree['__prototypes'][$currentPrototypeName]['__prototypeObjectName'])) {
$currentPrototypeName = $this->objectTree['__prototypes'][$currentPrototypeName]['__prototypeObjectName'];
array_unshift($prototypeInheritanceHierarchy, $currentPrototypeName);
}
if (count($prototypeInheritanceHierarchy)) {
// prototype chain from most *general* to most *specific* WITHOUT the current node type!
$this->objectTree['__prototypes'][$prototypeName]['__prototypeChain'] = $prototypeInheritanceHierarchy;
}
}
}