Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: архитектурный вопрос ООП
 
 автор: Axxil   (11.12.2007 в 12:19)   письмо автору
 
 

Есть, например, класс 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);
?>

ООП как известно позволяет манипулировать объектами реального мира. Т.е. сотрудниками.
Как теперь вывести список сотрудников?
Естественно можно использовать итераторы.
Но в таком случае на вывод каждого сотрудника будет тратиться один запрос к базе, что не рационально. Лучше одним запросом получить список сотрудников. А вот как это сделать в данной модели?

   
 
 автор: cheops   (11.12.2007 в 12:40)   письмо автору
 
   для: Axxil   (11.12.2007 в 12:19)
 

Введите класс-модель all_person и класс коллекцию customers - создайте набор классов с которыми вам удобно работать будет - создание набора класса - это нудное, долгое и неблагодарное занятие - зато если создан удачный набор - работать с ним потом в приложениях одно удовольствие.

   
 
 автор: Axxil   (11.12.2007 в 13:51)   письмо автору
 
   для: 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);  
?>


Чё-то смущает... неэстетично как-то :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования