<?php
class A
{
protected static
$deps = array('A.default.js', 'A.tablet.js'); public function getDependencies($class)
{
$parent = new ReflectionClass($this);
do
{
// ReflectionClass::getStaticPropertyValue() always throws ReflectionException with
// message "Class [class] does not have a property named deps"
// So I'm using ReflectionClass::getStaticProperties()
$staticProps = $parent->getStaticProperties();
}
while ($parent=$parent->getParentClass());
return $deps;
}
}
class B extends A
{
protected static
$deps = array('B.default.js'); }
class C extends B
{
protected static
$deps = array('C.default.js'); }
$obj = new C();
var_dump( $obj->getDependencies($obj) );
PD9waHAKCmNsYXNzIEEKewogIHByb3RlY3RlZCBzdGF0aWMgJGRlcHMgPSBhcnJheSgnQS5kZWZhdWx0LmpzJywgJ0EudGFibGV0LmpzJyk7CiAgcHVibGljIGZ1bmN0aW9uIGdldERlcGVuZGVuY2llcygkY2xhc3MpCiAgewogICAgJGRlcHMgPSBhcnJheSgpOwoJCQoJCSRwYXJlbnQgPSBuZXcgUmVmbGVjdGlvbkNsYXNzKCR0aGlzKTsKCQkKCQlkbyAKCQl7CgkJCS8vIFJlZmxlY3Rpb25DbGFzczo6Z2V0U3RhdGljUHJvcGVydHlWYWx1ZSgpIGFsd2F5cyB0aHJvd3MgUmVmbGVjdGlvbkV4Y2VwdGlvbiB3aXRoCgkJCS8vIG1lc3NhZ2UgIkNsYXNzIFtjbGFzc10gZG9lcyBub3QgaGF2ZSBhIHByb3BlcnR5IG5hbWVkIGRlcHMiCgkJCS8vIFNvIEknbSB1c2luZyBSZWZsZWN0aW9uQ2xhc3M6OmdldFN0YXRpY1Byb3BlcnRpZXMoKQoJCQkKCQkJJHN0YXRpY1Byb3BzID0gJHBhcmVudC0+Z2V0U3RhdGljUHJvcGVydGllcygpOwoJCQkkZGVwcyA9IGFycmF5X21lcmdlKCRkZXBzLCAkc3RhdGljUHJvcHNbJ2RlcHMnXSk7CgkJfQoJCXdoaWxlICgkcGFyZW50PSRwYXJlbnQtPmdldFBhcmVudENsYXNzKCkpOwoJCQoJCXJldHVybiAkZGVwczsKICB9Cn0KY2xhc3MgQiBleHRlbmRzIEEKewogIHByb3RlY3RlZCBzdGF0aWMgJGRlcHMgPSBhcnJheSgnQi5kZWZhdWx0LmpzJyk7Cn0KCmNsYXNzIEMgZXh0ZW5kcyBCCnsKICBwcm90ZWN0ZWQgc3RhdGljICRkZXBzID0gYXJyYXkoJ0MuZGVmYXVsdC5qcycpOwp9Cgokb2JqID0gbmV3IEMoKTsKdmFyX2R1bXAoICRvYmotPmdldERlcGVuZGVuY2llcygkb2JqKSApOw==