S2Dao.PHP5には最新版のS2Container.PHP5が必要です。
S2Container.PHP5のセットアップを終えてからS2Dao.PHP5の設定をしてください。
また、S2Dao.PHP5ではPDOを利用しています。
利用前にPDOのインストールも終えておいてください。
S2Dao.version.tgzを取得し、pear install を実施して下さい。
% pear install /path/to/S2Dao.{version}.tgz
install ok: channel://pear.php.net/S2Dao-{version}
% pear list
・・・
S2Container {version} status
S2Dao {version} status
・・・
%
S2Container.php と S2Dao.php を読み込み、__autoload関数を次のように定義して下さい。S2Dao.PHP5が使用可能となります。
<?php
require_once 'S2Container/S2Container.php';
require_once 'S2Dao/S2Dao.php';
function __autoload($class = null){
if($class != null){
include_once("$class.class.php");
}
}
?>
S2ContainerClassLoaderを利用する場合は、__autoload関数を次のように定義して下さい。
<?php
require_once 'S2Container/S2Container.php';
require_once 'S2Dao/S2Dao.php';
S2ContainerClassLoader::import(S2CONTAINER_PHP5);
S2ContainerClassLoader::import(S2DAO_PHP5);
function __autoload($class = null){
S2ContainerClassLoader::load($class);
}
?>
開発中のアプリケーションや使用しているフレームワークで既に__autoload関数が定義されている場合は、上記の __autoload関数内容を定義済み __autoload関数に追記して下さい。
S2Dao.PHP5をアンインストールする場合は、pear uninstall を実施して下さい。
% pear uninstall S2Dao
uninstall ok: channel://pear.php.net/S2Dao-{version}
s2dao.php5.version.tar.gz をダウンロード後、解凍すると以下のようなディレクトリが展開されます。
s2dao.php5/
+-- docs/ ----- ドキュメント ディレクトリ
+-- examples/ ----- examples ディレクトリ
+-- src/ ----- ソース ディレクトリ
+-- test/ ----- test case ディレクトリ
+-- s2dao.inc.php ----- S2Dao.PHP5 設定ファイル
+-- S2Dao.php ----- S2Dao.PHP5 設定ファイル
+-- Apache_Software_License_2.0.txt
+-- ChangeLog
S2Container.php と S2Dao.php を読み込み、__autoload関数を次のように定義して下さい。S2Dao.PHP5が使用可能となります。
<?php
require_once '/path/to/s2container.php5/S2Container.php';
require_once '/path/to/s2dao.php5/S2Dao.php';
function __autoload($class = null){
if($class != null){
include_once("$class.class.php");
}
}
?>
S2ContainerClassLoaderを利用する場合は、__autoload関数を次のように定義して下さい。
<?php
require_once '/path/to/s2container.php5/S2Container.php';
require_once '/path/to/s2dao.php5/S2Dao.php';
S2ContainerClassLoader::import(S2CONTAINER_PHP5);
S2ContainerClassLoader::import(S2DAO_PHP5);
function __autoload($class = null){
S2ContainerClassLoader::load($class);
}
?>
開発中のアプリケーションや使用しているフレームワークで既に__autoload関数が定義されている場合は、上記の __autoload関数内容を定義済み __autoload関数に追記して下さい。
通常 S2Dao.php を読み込むだけでS2Dao.PHP5の利用が可能です。
S2Dao.php の設定は以下の通りです。
<?php
require_once dirname(__FILE__) . '/build/s2dao.php5/S2Dao.php';
?>
S2Dao.PHP5を利用するには src/s2dao.php5/dao.dicon を読み込んでください。
DataSourceとしてPDOを必要とするので、pdo.diconの設定をしておいてください。
dao.diconは以下のように記述されています。
<components namespace="dao">
<include path="%PDO_DICON%" />
<component class="S2Dao_BasicResultSetFactory" />
<component class="S2Dao_BasicStatementFactory" />
<component class="S2Dao_FieldAnnotationReaderFactory" />
<component class="S2Dao_DaoMetaDataFactoryImpl" />
<component name="interceptor" class="S2DaoInterceptor" />
</components>
また、読み込むべきdiconの例です。
<components namespace="example">
<include path="dao.dicon" />
<component class="Cd1Dao">
<aspect>dao.interceptor</aspect>
</component>
<component class="Cd2DaoImpl">
<aspect>dao.interceptor</aspect>
</component>
</components>
詳細は /examples/s2dao/resource/example.dicon.xml に記述しているので参考にしてください。
/examples/example.inc.php では 以下のように記述し、複数個生成された dao 及び entity(bean)の読み込みを自動化しています。
if(class_exists("S2ContainerClassLoader")){
S2ContainerClassLoader::import(dirname(__FILE__) . "/dao");
S2ContainerClassLoader::import(dirname(__FILE__) . "/entity");
S2ContainerClassLoader::import(dirname(__FILE__) . "/impl");
function __autoload($class = null){
if( S2ContainerClassLoader::load($class) ){
return;
}
}
}
S2Dao.PHP5ではPDOを利用しています。
PDO で利用できる DSN については、PHP: PDO Functions - Manualを参考に設定してください。
多くの場合は /examples/pdo.dicon が参考になると思います。
dao.dicon を読み込む前に pdo.dicon を読み込むように設定してください。
/examples/pdo.dicon には以下のように記述されています。
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components namespace="pdo">
<component name="dataSource" class="S2Container_PDODataSource">
<property name="dsn">"mysql:host=localhost; dbname=s2con"</property>
<property name="user">"root"</property>
<property name="password">"pass"</property>
<property name="option">
array(PDO::ATTR_ORACLE_NULLS => PDO::NULL_EMPTY_STRING);
</property>
</component>
<component name="requiredTx" class="S2Dao_RequiredInterceptor" />
<component name="requiresNewTx" class="S2Dao_RequiresNewInterceptor" />
<component name="mandatoryTx" class="S2Dao_MandatoryInterceptor" />
<component name="neverTx" class="S2Dao_NeverInterceptor" />
<component name="notSupportedTx" class="S2Dao_NotSupportedInterceptor" />
</components>
|