Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: К чему создавать service если есть DAO?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: паттерн mvc
Faab
Отправлено: 27 Июня, 2013 - 15:34:12
Post Id


Гость


Покинул форум
Сообщений всего: 80
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




Вот в учебном материале сказано: создайте DAO и service. Простыми грубыми словами: DAO служит абстрактной прослойкой с ДБ, а сервис описавает методы для DAO. Обычно: 1 service для одного DAO. А я так и не понимаю цели service. Разве нельзя описать поведение сразу в DAO?

Спасибо
 
 Top
EuGen Администратор
Отправлено: 27 Июня, 2013 - 15:38:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Рискну предположить, что DAO - это Database Adapter Object. Но что такое service по мнению авторов материала - остаётся догадываться.
Про паттерн "адаптер" в общих чертах можете почитать здесь


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
caballero
Отправлено: 27 Июня, 2013 - 15:46:11
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Рискну предположить, что DAO - это Database Adapter Object.

скорее Data Access Object - но это зависит от того о каком языке и технолгии говорим.

Faab
Вася, ты хоть уточни о чем речь вообще. О каком материале на какую тему. а каком языке, технологии, фреймворке и т.д.
в PHP нет никаких DAO и никаких service


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
esterio
Отправлено: 27 Июня, 2013 - 15:58:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




а я смею предложить что service ето service locator? Хотя service locator принадлежит к групе создателей

(Отредактировано автором: 27 Июня, 2013 - 16:01:07)

 
 Top
Faab
Отправлено: 27 Июня, 2013 - 15:59:12
Post Id


Гость


Покинул форум
Сообщений всего: 80
Дата рег-ции: Апр. 2012  


Помог: 0 раз(а)




EuGen пишет:
Рискну предположить, что DAO - это Database Adapter Object. Но что такое service по мнению авторов материала - остаётся догадываться.
Про паттерн "адаптер" в общих чертах можете почитать <a href='http://ru.wikipedia.org>здесь</a>


Да, я дал мало информации. Это курс по PHP , который потом плавно вытекает к программирование на Drupal. Вот авторы просят создать 4 папки: business, presentation, data и entities.

сам контроллер лежит в root, а вид (в presentation) выкладывать не буду. Вот три файла:

entities/book.class.php


PHP:
скопировать код в буфер обмена
  1.  
  2. class Boek {
  3.    
  4.     private static $idMap = array();
  5.    
  6.     private $id;
  7.     private $title;
  8.     private $genre;
  9.    
  10.     private function __construct($id, $title, $genre){
  11.         $this->id = $id;
  12.         $this->title = $title;
  13.         $this->genre = $genre;
  14.     }
  15.    
  16.     public static function create($id, $title, $genre){
  17.         if(!isset(self::$idMap[$id])){
  18.             self::$idMap[$id] = new Boek($id, $title, $genre);
  19.         };
  20.         return self::$idMap[$id];
  21.     }
  22.    
  23.     public function getId(){
  24.         return $this->id;
  25.     }
  26.    
  27.     public function getTitle(){
  28.         return $this->title;
  29.     }
  30.    
  31.     public function getGenre(){
  32.         return $this->genre;
  33.     }    
  34.    
  35.     public function setTitle($title){
  36.         $this->title = $title;
  37.     }
  38.    
  39.     public function setGenre($genre){
  40.         $this->genre = $genre;
  41.     }
  42. }
  43.  


data/bookDAO.class.php
PHP:
скопировать код в буфер обмена
  1.  
  2. require_once('data/dbconfig.class.php');
  3. require_once('entities/genre.class.php');
  4. require_once('entities/boek.class.php');
  5.  
  6.  
  7. class BoekDAO {
  8.    
  9.     public static function getAll(){
  10.         $lijst = array();
  11.        
  12.         $dbh = new PDO(DBConfig::$DB_CONNSTRING, DBConfig::$DB_USERNAME, DBConfig::$DB_PASSWORD);
  13.        
  14.         $sql = 'SELECT boeken.id AS boekid, title, genre_id, description FROM boeken, genres WHERE genre_id = genres.id';
  15.        
  16.         $resultSet = $dbh->query($sql);
  17.        
  18.         foreach($resultSet as $resultRow){
  19.             $genre = Genre::create($resultRow['genre_id'], $resultRow['description']);
  20.             $boek = Boek::create($resultRow['boekid'], $resultRow['title'], $genre);
  21.             array_push($lijst, $boek);
  22.         };
  23.        
  24.         $dbh = null;
  25.        
  26.         return $lijst;
  27.     }
  28.    
  29.     public static function getById($id){
  30.         $dbh = new PDO(DBConfig::$DB_CONNSTRING, DBConfig::$DB_USERNAME, DBConfig::$DB_PASSWORD);
  31.        
  32.         $sql = 'SELECT boeken.id AS boekid, title, genre_id, description FROM boeken, genres WHERE genre_id = genres.id AND boeken.id = '.$id;
  33.        
  34.         $resultSet = $dbh->query($sql);
  35.        
  36.         $resultRow = $resultSet->fetch();
  37.        
  38.         $genre = Genre::create($resultRow['genre_id'], $resultRow['description']);
  39.        
  40.         $boek = Boek::create($resultRow['boekid'], $resultRow['title'], $genre);
  41.        
  42.         $dbh = null;
  43.        
  44.         return $boek;
  45.     }
  46.    
  47.     public static function create($title, $genre_id){
  48.        
  49.         $sql = 'INSERT INTO boeken (title, genre_id) VALUES ("'.$title.'", '.$genre_id.')';
  50.        
  51.         $dbh = new PDO(DBConfig::$DB_CONNSTRING, DBConfig::$DB_USERNAME, DBConfig::$DB_PASSWORD);
  52.        
  53.         $dbh->exec($sql);
  54.         $boekId = $dbh->lastInsertId();
  55.        
  56.         $dbh = null;
  57.        
  58.         $genre = GenreDAO::getById($genre_id);
  59.         $boek = Boek::create($boekId, $title, $genre);
  60.        
  61.         return $boek;
  62.     }
  63. }


business/bookservice.class.php

PHP:
скопировать код в буфер обмена
  1. require_once('data/boekDAO.class.php');
  2.  
  3. class BoekService {
  4.    
  5.     public static function showAllBooks(){
  6.         $lijst = BoekDAO::getAll();
  7.         return $lijst;    
  8.     }
  9.    
  10.     public static function addNewBook($title, $genre_id){
  11.         BoekDAO::create($title, $genre_id);
  12.     }
  13. }


Я не стал выкладывать все файлы, выставил только три, что касается одного энтити, - книги. Мой главный вопрос этого топика: для чего нужна папка business? В контроллере я обращаюсь BoekService::addNewBook($title, $genre); Но я жу могу также обратиться и так BoekDAO::create($title, $genre_id);?

(Отредактировано автором: 27 Июня, 2013 - 16:11:34)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB