DAO成果物の生成
ここでは、bookstoreというデータベースを使ってDAO成果物を生成するプロセスを示します。このデータベースにはbooksというテーブルが1つだけ含まれています。このテーブルの構造は図2のようになっています。
図2のテーブルを作成するには、次のSQLステートメントを実行します。
create table books
(id int not null auto_increment primary key,
title varchar(50),
author varchar(50),
yearofpublication int,
publisher varchar(50),
price int);
DAO成果物を生成する前に、次のINSERTステートメントを実行して、booksテーブルに5つのレコードを入れます。
insert into books values(1,"Annabel Lee", "Edgar Allan Poe",1849,"The Literature Page",256); insert into books values(2,"The Ballad of Reading Gaol", "Oscar Wilde",1898,"The Literature Page",475); insert into books values(3,"The Sonnets", "Edgar Allan Poe",1602,"The Literature Page",300); insert into books values(4,"Winnetow", "Karl May",1956,"The truth",123); insert into books values(5,"JBoss Tools 3", "Anghel Leonard",2009,"Packt",569);
データベースおよびbooksテーブルの作成とデータの書き込みが済んだら、DAOジェネレータを実行してDAO成果物を作成できます。ジェネレータを実行するには、次の手順に従ってください。
ConnectionPropertyクラスで接続プロパティのhost、user、password、databaseを設定します。- generated.phpスクリプトを実行します。
- 出力は次のようになります。
- 出力の最後の3行は生成されたクラスの名前を示しています。これらのクラスはphpdao-1.7ディレクトリ内のサブフォルダとして新たに生成されたフォルダに格納されます。
generated/class/dto/Books.class.php varchar(50) varchar(50) varchar(50) varchar(50) int(11) int(11) varchar(50) varchar(50) int(11) int(11) generated/class/mysql/BooksMySqlDAO.class.php varchar(50) varchar(50) int(11) varchar(50) int(11) generated/class/dao/BooksDAO.class.php generated/include_dao.php generated/class/dao/DAOFactory.class.php
生成された3つのクラスはbooksテーブルを処理するためのものです。1つ目のクラスはgenerated/class/dto/Books.phpファイルに入っており、booksテーブルを表すオブジェクトを定義しています。
<?php
/**
* Object represents table 'books'
*
* @author: http://phpdao.com
* @date: 2009-08-10 22:50
*/
class Books{
var $id;
var $title;
var $author;
var $yearofpublication;
var $publisher;
var $price;
}
?>
2つ目のクラスはgenerated/class/dao/BooksDAO.phpファイルに入っており、これはbooksテーブルに対する種々の操作を定義したインターフェースです。
<?php
/*
* Interface DAO
*
* @author: http://phpdao.com
* @date: 2009-08-10 22:50
*/
interface BooksDAO{
/**
* Get Domain object by primry key
*
* @param String $id primary key
* @Return Books
*/
public function load($id);
/**
* Get all records from table
*/
public function queryAll();
/**
* Get all records from table ordered by field
* @Param $orderColumn column name
*/
public function queryAllOrderBy($orderColumn);
/**
* Delete record from table
* @param books primary key
*/
public function delete($id);
/**
* Insert record to table
*
* @param Books books
*/
public function insert($books);
/**
* Update record in table
*
* @param Books books
*/
public function update($books);
/**
* Delete all rows
*/
public function clean();
public function queryByTitle($value);
public function queryByAuthor($value);
public function queryByYearofpublication($value);
public function queryByPublisher($value);
public function queryByPrice($value);
public function deleteByTitle($value);
public function deleteByAuthor($value);
public function deleteByYearofpublication($value);
public function deleteByPublisher($value);
public function deleteByPrice($value);
}
?>
3つ目のクラスはgenerated/class/mysql/BooksMySqlDAO.phpファイルに入っており、上記のインターフェースクラスを実装しています。このクラスは対応するフォルダに格納されています(かなり大きなクラスなので、ここには示しません)。

