19. DB.php
private $manager = null;
private function __construct() {}
protected function getManager($dbname) {
// ここでDB接続処理(PDO)
$manager = new PDO();
return $manager;
}
ポイント:
・コンストラクタはprivateで宣言
・DB.phpは継承して使うのでインスタンスを返却するメソッド
(getManager)はprotectedで宣言
20. DAO.php
class DAO extends DB {
private static $dbaccessor = null;
private function __construct() {}
private function init() {} // 初期処理
public function getInstance() {
if (!is_object(DAO::$dbaccessor)) {
DAO::$dbaccessor = new DAO();
}
DAO::$dbaccessor->init();
return DAO::$dbaccessor;
}
// CRUDを処理するメソッドを以下に定義
}
24. ServiceAbstract.php
abstract class ServiceAbstract {
function __construct($params = array()) {
$this->prepare($params)
->fetch()
->process();
}
final public function get() {
return $this->_data;
}
abstract protected function prepare($params);
abstract protected function fetch();
abstract protected function process();
25. ServiceBookmark.php
class ServiceBookmark extends ServiceAbstract {
function __construct($params = array()) {
$this->_params = $params;
parent::__construct();
}
public function prepare($params) {
// ブクマデータ取得前処理
return $this;
}
public function fetch() {
// ブクマデータ取得処理
return $this;
}
public function process() {
// ブクマデータ加工
$this->_data = ...
}
27. 使い方の例
$hatebu = new ServiceBookmark();
$data = $hatebu->get();
$twitter = new
ServiceTwitter($param);
$data2 = $twitter->get();
ポイント:
・異なる外部サービスの処理を同じにできる。