PDOクラスを継承する任意のクラスを作成します。クラスのコンストラクタでデータソースを設定します。
例として、次のようなSqlitePdoクラスを /path/to/classes/SqlitePdo.php に作成します。
<?php class SqlitePdo extends \PDO { public function __construct() { parent::__construct('sqlite:' . DB_DIR . '/sqlite.db'); $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } }
作成したPDOクラスを使用するCdDaoを /path/to/classes/CdDao.php に作成します。
<?php class CdDao { public $sqlitePdo = null; public function findAll() { $stmt = $this->sqlitePdo->prepare('select * from CD'); $stmt->setFetchMode(PDO::FETCH_OBJ); $stmt->execute(); return $stmt->fetchAll(); } }
PDOクラスやCdDaoクラスをS2ApplicationContextでimportします。
<?php require_once('S2Container/S2Container.php'); define('DB_DIR', dirname(__FILE__) . '/db'); use seasar\container\S2ApplicationContext as s2app; s2app::import(dirname(__FILE__) . '/classes'); $cdDao = s2app::get('CdDao'); var_dump($cdDao->findAll());
DICONファイルでPDOの設定を行います。例として、次のようなDICONファイルを /path/to/dicons/pdo.dicon として作成します。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN" "http://www.seasar.org/dtd/components21.dtd"> <components> <component name="sqlitePdo" class="PDO"> <arg>return 'sqlite:' . DB_DIR . '/sqlite.db'</arg> </component> </components>
作成したDICONファイルやCdDaoクラスをS2ApplicationContextでimportします。
<?php require_once('S2Container/S2Container.php'); use seasar\container\S2ApplicationContext as s2app; use seasar\container\S2ApplicationContext as s2app; s2app::import(dirname(__FILE__) . '/classes/CdDao.php'); s2app::import(dirname(__FILE__) . '/dicon'); $cdDao = s2app::get('CdDao'); var_dump($cdDao->findAll());
NOTE | |
---|---|
このExampleは examples/misc/datasource にあります。 |
© Copyright The Seasar Foundation and the others 2005-2010, all rights reserved. |