При программировании ОО в PHP я никогда точно не знаю, как отобразить класс на простые списки данных. Я постараюсь сделать простой пример, с которым я сталкиваюсь каждый день:
Сначала таблица MySQL создает:
/* create product table */
CREATE TABLE `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`description` text COLLATE utf8_unicode_ci,
`price` decimal(10,0) NOT NULL,
`brand` int(11) NOT NULL,
`deliverytime` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
/* data list for all kind of brands */
CREATE TABLE `brand` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`brand` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
/* brand data*/
insert into `brand`(`id`,`brand`) values (1,'nike'),(2,'adidas'),(3,'diesel'), (4,'dkny'),(5,'lacoste');
/* data list for deliverytime */
CREATE TABLE `deliverytime` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`deliverytime` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
/* deliverytime data */
insert into `deliverytime`(`id`,`deliverytime`) values (1,'1 day'),(2,'2 days'),(3,'3 days'),(4,'4 days'),(5,'5 days'),(6,'6 days'),(7,'1 week'),(8,'1 - 2 weeks'),(9,'2 - 3 weeks'),(10,'4 - 5 weeks');
Затем я создаю класс продукта.
class Product{
private
$name,
$description,
$price,
$brand
$deliverytime;
public function __construct(){
// etc etc
}
public function save(){
// save the product
}
}
Теперь большие вопросы:
Как мне обращаться с $ brand и $ deliverytime в моем классе Product?
Должен ли я создать объект Brand и DeliveryTime (который, в свою очередь, отвечает за выбор нужного бренда и / или времени доставки)?
А как насчет сохранения объекта Product?
Как мне обрабатывать данные о бренде и времени доставки?
Какова лучшая практика или шаблон для решения подобных ситуаций?
Извините за этот вопрос, но я не был уверен, где искать (теги для поиска): /
EDIT:
Хорошо, допустим, я не хочу использовать что-то вроде структуры ORM (Doctrine, dORM, redbean и т. Д.), Так как это было бы гигантским излишним для моей маленькой системы + я действительно хочу знать, как создать отображение самостоятельно для целей обучения. ... есть предложения?