TOP書籍連動> 飛躍的に改善されたオブジェクト機能




まるごと PHP!
まるごと PHP!

Part1:PHP5のオブジェクト指向(1)

著者:桝形誠二(MASUGATA, Seiji)   2005/2/22
1   2  次のページ
飛躍的に改善されたオブジェクト機能

   PHP5では、オブジェクト指向の機能が強化され、実用的なオブジェクト指向プログラミングが実現されました。この連載では、PHPでオブジェクト指向を使ったプログラミングの例を紹介します。

   これまでのバージョンのPHPではオブジェクトの機能が弱かったため、本格的にオブジェクト指向プログラミングを行う場合につまずくことがよくありました。PHP5では、Zend Engineのバージョンが上がったことで、特にオブジェクトの機能が飛躍的に改善されました。

   これにより、Javaライクなオブジェクト指向プログラミングが可能になります。もちろん、すべてがJavaと同様であるというわけではありませんが、ほぼ問題はないと考えてよいでしょう。

   ここでは、新たに使えるようになったオブジェクトの機能のうち、頻繁に使われるであろう機能を中心に紹介していきます。

例外処理

   今までのPHPでは例外処理をうまく扱うことが難しく、主に関数やメソッドからの戻り値を毎回エラーチェックするといった方法が取られていました。しかし毎回このようなことをするのは煩雑で面倒です。

   PHP5では例外処理がサポートされたので、より柔軟にエラー処理を行うことが可能です。基本の流れは、try{ }ブロックで投げられた例外をcatch{ }ブロックで受け取るというものです(リスト1)。

リスト1:exception.php
<?
function getSQLite( $DB )
{
try {

return sqlite_factory( $DB );

} catch ( SQLiteException $Exception ) {

echo "\n例外が発生しました!\n".
"[".$Exception->getMessage( )."]\n".
"[".$Exception->getCode( )."]\n".
"[".$Exception->getFile( )."]\n".
"[".$Exception->getLine( )."]\n\n";

print_r( $Exception->getTrace( ) );
}
}

$SQLite = getSQLite( "" );
$SQLite = getSQLite( ":memory:" );

?>

   例外が発生したときに出力される情報は、上から順に、例外メッセージ、例外コード、例外が発生したソースコードファイル名、例外が発生したソースコード行番号、例外発生時のバックトレースとなります。

   catch{ }ブロックは複数定義できますが、catch{ }ブロックで定義していない例外が発生すると、「Fatal error: Uncaught exception」となり、例外内容を表示してプログラムは中断します(リスト2)。

リスト2:excep_throw.php
<?
class MyException extends exception
{
function __construct( $Error )
{
$this->error = $Error;
}

function getErrorMessage( )
{
return $this->error;
}
}

class MyMyException extends MyException
{
}

try {
throw new MyMyException( "MyMyException!!" );
} catch ( MyException $MyException ) {
echo $MyException->getErrorMessage( )."\n";
} catch ( MyMyException $MyMyException ) {
echo $MyMyException->getErrorMessage( )."\n";
}

try {
throw new MyException( "MyMyMyException!!" );
} catch ( MyMyException $MyMyException ) {
echo $MyMyException->getErrorMessage( )."\n";
}

?>

   型指定の柔軟なPHPでは珍しい制約ですが、例外はオブジェクトしか投げられません。また、例外をcatch{ }で指定するときには、受け取る例外オブジェクトのクラスを指定する必要があります。

1   2  次のページ



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


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
Part1:PHP5のオブジェクト指向(1)
飛躍的に改善されたオブジェクト機能
  コンストラクタとデストラクタ
まるごと PHP!
Part1 PHP5のオブジェクト指向(1)
PHP5のオブジェクト指向(2)
PHP5のオブジェクト指向(3)
Part2 トライ!SQLite(1)
トライ!SQLite(2)
トライ!SQLite(3)
Part3 MySQL拡張サポート(1)
MySQL拡張サポート(2)
MySQL拡張サポート(3)
Part4 PDO(PHP Data Object)データベース抽象化レイヤクラス(1)
PDO(PHP Data Object)データベース抽象化レイヤクラス(2)
PDO(PHP Data Object)データベース抽象化レイヤクラス(3)
Part5 PHP5のXMLサポート(1)
PHP5のXMLサポート(2)
PHP5のXMLサポート(3)
Part6 PHP4からPHP5への移行のポイント