|
|
|
| Есть, например, класс customer, описывающий заказчика.
<?
class customer{
function __construct($id){
$this->personModel = spec::loadModel('person');
$this->id = $id;
}
function __toString(){
return "Имя: ".$this->personModel->getName($this->id);
}
}
?>
|
Информация берётся из БД посредством некоторого класса-модели person.
Вывести имя одного заказчика удаётся без проблем
<?
echo new customer(1);
?>
|
ООП как известно позволяет манипулировать объектами реального мира. Т.е. сотрудниками.
Как теперь вывести список сотрудников?
Естественно можно использовать итераторы.
Но в таком случае на вывод каждого сотрудника будет тратиться один запрос к базе, что не рационально. Лучше одним запросом получить список сотрудников. А вот как это сделать в данной модели? | |
|
|
|
|
|
|
|
для: Axxil
(11.12.2007 в 12:19)
| | Введите класс-модель all_person и класс коллекцию customers - создайте набор классов с которыми вам удобно работать будет - создание набора класса - это нудное, долгое и неблагодарное занятие - зато если создан удачный набор - работать с ним потом в приложениях одно удовольствие. | |
|
|
|
|
|
|
|
для: cheops
(11.12.2007 в 12:40)
| | т.е. если я работаю с одним заказчиком то использую класс customer
если работаю со списками то использую класс customers который перебирает в цикле объекты класcа customer ?
Так?
Чё-то я запутался...
<?php
class customer{
function __construct($data){
$this->name = $data['name'];
$this->surname = $data['surname'];
}
function getInfo(){
return $this->name." ".$this->surname;
}
}
class customers{
function __construct(){
$this->model = spec::loadModel('person'); //
}
// Метод выводит список заказчиков
function getList(){
$data = $this->model->customersList();
$ret = '';
foreach($data as $customer){
$customer = new customer($customer);
$ret .= $customer->getInfo()."<br>";
}
return $ret;
}
// Метод выводит заказчика по ID
function getById($id){
$data = $this->model->customerById($id);
$customer = new customer($data);
return $customer->getInfo();
}
}
?>
|
И теперь выводим список заказчиков так:
<?
require_once "class.test.php";
$customers = new customers;
echo $customers->getList();
?>
|
а одного заказчика так:
<?
require_once "class.test.php";
$customers = new customers;
echo $customers->getById(1);
?>
|
Чё-то смущает... неэстетично как-то :) | |
|
|
|