Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вопрос про наследование
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Вопрос про наследование

Страниц (1): [1]
 

1. Haron - 31 Января, 2012 - 03:27:42 - перейти к сообщению
Допустим есть цепочка наследования из X классов:

PHP:
скопировать код в буфер обмена
  1. class A
  2. {
  3.  
  4. }
  5.  
  6. class B extends A
  7. {
  8.  
  9. }
  10.  
  11. ......
  12. ......
  13.  
  14. final class F extends E
  15. {
  16.  
  17. }


Встал вопрос получения массива имён классов, в порядке их наследования. Очевиден такой способ:

PHP:
скопировать код в буфер обмена
  1. class A
  2. {
  3.     protected $ext = array();
  4.    
  5.     function __construct()
  6.     {
  7.         $ext[] = __CLASS__;
  8.     }
  9. }
  10.  
  11. class B extends A
  12. {
  13.     function __construct()
  14.     {
  15.         $ext[] = __CLASS__;
  16.     }
  17. }
  18.  
  19. .....
  20. .....
  21.  
  22. final class F extends E
  23. {
  24.     function __construct()
  25.     {
  26.         $ext[] = __CLASS__;
  27.         print_r($this -> ext);
  28.     }
  29. }
  30.  
  31. new F();
  32.  
  33. /*
  34. Напечатает:
  35. array(
  36.     0 => A, 1 => B, ... 4 => E
  37. )
  38. */


Отлично... Но вот только выглядит это как костыль, или валасапед с введением "лишней" переменной. Есть ли какое-то стандартное решение в языке, позволяющее сразу и без подобных костылей получить подобный массив цепочки наследования?

 

Powered by ExBB FM 1.0 RC1