Гость
Покинул форум
Сообщений всего: 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:
скопировать код в буфер обмена
class Boek { private static $idMap = array(); private $id; private $title; private $genre; private function __construct($id, $title, $genre){ $this->id = $id; $this->title = $title; $this->genre = $genre; } public static function create($id, $title, $genre){ if(!isset(self::$idMap[$id])){ self::$idMap[$id] = new Boek($id, $title, $genre); }; return self::$idMap[$id]; } public function getId(){ return $this->id; } public function getTitle(){ return $this->title; } public function getGenre(){ return $this->genre; } public function setTitle($title){ $this->title = $title; } public function setGenre($genre){ $this->genre = $genre; } }
data/bookDAO.class.php
PHP:
скопировать код в буфер обмена
require_once('data/dbconfig.class.php'); require_once('entities/genre.class.php'); require_once('entities/boek.class.php'); class BoekDAO { public static function getAll(){ $dbh = new PDO(DBConfig::$DB_CONNSTRING, DBConfig::$DB_USERNAME, DBConfig::$DB_PASSWORD); $sql = 'SELECT boeken.id AS boekid, title, genre_id, description FROM boeken, genres WHERE genre_id = genres.id'; $resultSet = $dbh->query($sql); foreach($resultSet as $resultRow){ $genre = Genre::create($resultRow['genre_id'], $resultRow['description']); $boek = Boek::create($resultRow['boekid'], $resultRow['title'], $genre); }; $dbh = null; return $lijst; } public static function getById($id){ $dbh = new PDO(DBConfig::$DB_CONNSTRING, DBConfig::$DB_USERNAME, DBConfig::$DB_PASSWORD); $sql = 'SELECT boeken.id AS boekid, title, genre_id, description FROM boeken, genres WHERE genre_id = genres.id AND boeken.id = '.$id; $resultSet = $dbh->query($sql); $resultRow = $resultSet->fetch(); $genre = Genre::create($resultRow['genre_id'], $resultRow['description']); $boek = Boek::create($resultRow['boekid'], $resultRow['title'], $genre); $dbh = null; return $boek; } public static function create($title, $genre_id){ $sql = 'INSERT INTO boeken (title, genre_id) VALUES ("'.$title.'", '.$genre_id.')'; $dbh = new PDO(DBConfig::$DB_CONNSTRING, DBConfig::$DB_USERNAME, DBConfig::$DB_PASSWORD); $dbh->exec($sql); $boekId = $dbh->lastInsertId(); $dbh = null; $genre = GenreDAO::getById($genre_id); $boek = Boek::create($boekId, $title, $genre); return $boek; } }
business/bookservice.class.php
PHP:
скопировать код в буфер обмена
require_once('data/boekDAO.class.php'); class BoekService { public static function showAllBooks(){ $lijst = BoekDAO::getAll(); return $lijst; } public static function addNewBook($title, $genre_id){ BoekDAO::create($title, $genre_id); } }
Я не стал выкладывать все файлы, выставил только три, что касается одного энтити, - книги. Мой главный вопрос этого топика: для чего нужна папка business? В контроллере я обращаюсь BoekService::addNewBook($title, $genre); Но я жу могу также обратиться и так BoekDAO::create($title, $genre_id);?(Отредактировано автором: 27 Июня, 2013 - 16:11:34)
|