Консультация № 52780
21.08.2006, 17:58
0.00 руб.
0 1 1
Вопрос по PHP ООП
Писать начал именно ООП недавно. Пока путаюсь с общей теорией.

Есть класс предметов, скажем автомобилей, физически автомобили описаны в БД, один автомобиль - уникальный номер в таблице.
Делаю родительский класс и в нем описываю все что одинаково для всех автомобилей (колеса, двигатель ...). Дальше делаю несколько дочерних классов типа гоночные, грузовые, трактора...
А вот теперь главная задача. Допустим в скрипте нужно на страничку вывести все подробности автомобиля причем известен только номер строчки в БД. Но на выходе нужно иметь экземпляр дочернего класса.
Как это сделать правильно?

Сдедал так (код прилагаю), это работает. Но у меня сильные подозрения, что это неверно.

Приложение:
$disp_car=trim($_GET[‘disp_car‘]); // disp_car - уникальный номер в таблице БД$car=new car($disp_car); //делаю экземпляр материнского классаif($car->model=="Truck") $car=new car_truck($disp_car);if($car->model=="Betonomeshalka") $car=new car_beton($disp_car);

Обсуждение

Неизвестный
22.08.2006, 07:57
общий
это ответ
Здравствуйте, Alexey-PHP!
Я бы предложил такой вариант, смотрите приложение. В таблице надо, чтобы хранились названия самих классов.

Приложение:
<?php$disp_car=(int)trim($_GET[‘disp_car‘])// каким-нибудь образом получаем _имя класса_ будущей машины// например: list($class_name)=mysql_fetch_row(mysql_query(‘SELECT class_name FROM your_table WHERE disp_car = "‘.$disp_car.‘"));// проверяем, существует ли классif (class_exists($class_name)){// существует, создаем экземпляр класса $car = new $class_name($disp_car);}else// иначе, выводим ошибку echo "error: class ".$class_name." not found.";
Форма ответа