@Dimas123

Как сделать наследование классов?

У меня есть класс A мне ещё нужен класс, который делает всё тоже самое, что и класс А, но берет данные из другой таблицы "table2".

Наверное, лучше имя таблицы передавать в конструкторе и тогда второй класс не нужен, правильно?

Но мне хотелось бы решить это с помощью создания класса наследника в котором изменить только table1 на table2. Как это сделать?

<?
class A {
	public $c;		
public function __construct() { 
		$query = "SELECT * FROM `table1`;";	
		//здесь код по раскладке данных из таблицы базы в переменные		
}	
	function f1() {
	//код
	return $r1;	
	}
} 
?>
  • Вопрос задан
  • 2218 просмотров
Решения вопроса 1
@drunking
Делается так:
class B extends A
{
	public function __construct()
	{
		$query = "SELECT * FROM `table2`;";	
	}
}

Но думаю в вашем случае делать так не целесообразно, если конструктор выполняет идентичный функционал. Добавьте переменную в конструкторе куда будете подсовывать имя таблицы и используйте её в селекте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Ну вы правы - наследование тут совсем не нужно. Если уж очень хочется - разные конструкторы делаете в обоих классах - каждый будет по своему инитить переменную с именем таблицы.
Ответ написан
Комментировать
@DancingOnWater
class Student { }
 class GraduateStudent extends Student { }


Однако советую открыть для себя ORM:
https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D...
Ответ написан
Комментировать
NickyX3
@NickyX3
Ну вообще можно и как автор хочет. Как то так.
class A {
	private $table = 'table1';
	public function __construct() {
		// some init
	}
	public function run () {
		// select * from $this->table
	}
}

class B extends A {
	public function __construct() {
		parent::__construct();
		// some init
		$this->table = 'table2';
	}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы