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. mstdmstd - 02 Декабря, 2015 - 10:56:18 - перейти к сообщению
Всем привет,
есть класс baseA, который в числе прочего конектиться к базе данных и считывает строки.
и есть несколько наследуемых от baseA классов extendedB, extendedC, extendedD - каждый из которых имеет разные методы обработки данных.
Хочется в зависимости от типа считывемых данных подключить нужный наследуемый класс вроде :

PHP:
скопировать код в буфер обмена
  1. $data_list= $baseA->read_data();
  2. foreach( $data_list as $next_data ) {
  3.      $next_data['method_type']->workWihData( $next_data['data'] ); //То есть по ключевому полю данных вывать метод нужного класса
  4. }
  5.  

Можноли это сделать и как?
PHP 5.5.

Спасибо!
2. DeepVarvar - 03 Декабря, 2015 - 08:05:52 - перейти к сообщению
Архитектура не верна.
Не нужно наследовать коннекты.
Коннект должен быть один, и им просто должны пользоваться те, кому он нужен.
Что же касается переопределения (перегрузки) методов, то тут все просто:
PHP:
скопировать код в буфер обмена
  1. class A
  2. {
  3.     public function x()
  4.     {
  5.         echo 'A example':
  6.     }
  7. }
  8. class B extends A
  9. {
  10.     public function x()
  11.     {
  12.         echo 'B example':
  13.     }
  14. }
  15. class C extends A
  16. {
  17.     public function x()
  18.     {
  19.         echo 'C example':
  20.     }
  21. }
  22.  
  23. foreach (['A', 'B', 'C'] as $className) {
  24.     $obj = new $className();
  25.     $obj->x();
  26. }

Еще можешь почитать про рефлексию.
Может это она тебе нужна.

 

Powered by ExBB FM 1.0 RC1