1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?php class A { protected static $deps = array('A.default.js', 'A.tablet.js'); public function getDependencies($class) { $deps = array(); $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(); $deps = array_merge($deps, $staticProps['deps']); } 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==
-
upload with new input
-
result: Success time: 0.02s memory: 13112 kB returned value: 0
array(4) { [0]=> string(12) "C.default.js" [1]=> string(12) "B.default.js" [2]=> string(12) "A.default.js" [3]=> string(11) "A.tablet.js" }


