TOP書籍連動> オブジェクトAPI
まるごと PHP!
まるごと PHP!

Part2:トライ!SQLite(3)

著者:桝形誠二(MASUGATA, Seiji)   2005/3/9
1   2  次のページ
オブジェクトAPI

   今までは関数APIを中心にサンプルプログラムを掲載してきましたが、SQLiteはオブジェクトAPIも利用できます。オブジェクトAPIを利用すると、PEAR::DBなどのクラスライブラリを利用することなくオブジェクト指向プログラミングを行うことが容易になります(リスト11)。
リスト11:obAPI.php
<?
$SQLite = sqlite_factory( "testdb" ) or die( "db open error!!" );

$SQLite->query( "begin" );

$Result = $SQLite->query( "select foo, bar from hoge where foo < 100" );

while( $Array = $Result->fetch ( SQLITE_ASSOC ) )
{
print_r( $Array );
}

$SQLite->query( "commit" );

?>

   利用できるメソッドがわからない場合は、「print_r( get_class_methods( get_class ( "オブジェクト" ) ) );」を実行すると、利用できるメソッドを確認できます。ほとんどの関数APIはオブジェクトAPIとして利用できるので、好みに応じて使い分けるとよいでしょう。

   ここでは、fetchメソッドに対して定数SQLITE_ASSOCを渡していますが、これはフィールド名を配列インデックスとして渡すという定義です。数値インデックスにしたい場合はSQLITE_NUMとします。何も定義しない場合には、フィールド名を配列インデックスとしたものと数値インデックスが混合した配列が返されるので、用途に応じて使い分けるとよいでしょう。

UDF(ユーザー定義関数)(1)

   SQLiteは、PHP関数をUDF(ユーザー定義関数)として登録することもでき、独自に作成した関数をSQL関数として呼び出せます。これには、登録したい関数名と実際に利用するSQL関数名、引数の数を定義します(リスト12、リスト13)。

リスト12:UDF.php
<?
include( "UDF.inc" );

$SQLite = sqlite_factory( "testdb" ) or die( "db open error!!" );

$SQLite->createFunction( "go_replace", "mb_convert_kana", 2 );
$SQLite->createFunction( "go_change", "my_change", 1 );

$SQLite->query( "begin" );

$Result = $SQLite->query( "select go_replace( foo, 'N' ), go_change ( bar ) from hoge where foo < 100" );

while( $Array = $Result->fetch ( SQLITE_NUM ) )
{
print_r( $Array );
}

$SQLite->query( "commit" );

?>

リスト13:UDF.inc
<?
//-----------------------------------//
// UDF関数:go_change
// "TEST"を"test"に変換して半角数字を全角数字に変換
//-----------------------------------//
function my_change( $String )
{
return mb_convert_kana ( mb_ereg_replace( "TEST", "test", $String ), "RN" );
}

?>

   当然ですが、登録したい関数名に対応した関数を事前に作成しておくことが必要です。

1   2  次のページ



著者プロフィール
桝形 誠二
様々な言語を経験していく中でPHPと出会い、初心者に易しいという魅力に惹かれ続けて早5年。色んな事をPHPで実装しようとしすぎて周囲の反感を買いやすいのが最近の悩み。


INDEX
Part2:トライ!SQLite(3)
オブジェクトAPI
  UDF(ユーザー定義関数)(2)