抽象クラス 抽象クラスはインスタンス化できません。 抽象クラスでは、他のクラスと同様に、変数とメソッドを定義できます。 抽象クラスは抽象メソッドを定義することもできます。抽象クラスのメソッドは実行されませんが、その派生クラスで実行される可能性があります。 例 6: 抽象クラス x = $x; } } class foo2 extends foo { function display() { // Code } } ?> __call PHP5 オブジェクトには、他のメソッドの監視に使用される新しい専用メソッド __call() があります。オブジェクト。オブジェクトに存在しないメソッドを呼び出そうとすると、__call メソッドが自動的に呼び出されます。 例 7: __call doStuff(); $x->fancy_stuff(); ?> この特別なメソッドを使用して「オーバーロード」アクションを実装すると、パラメーターを確認してプライベート メソッドを呼び出してパラメーターを渡すことができます。 例 8: __call を使用して「オーバーロード」アクションを実装しますfoo_for_int($arguments[0]); if(is_string($arguments[0])) $this->foo_for_string($arguments[0]); } } private function foo_for_int ($x) { print("ああ、整数だ!"); } プライベート関数 foo_for_string($x) { print("ああ、文字列だ!") } } $x = new Magic(); 3); $x->foo("3"); ?> __set および __get これは、オブジェクトに存在しない変数やメソッドを取得するために使用できる優れたメソッドです。 例 9: __set と __get bar = 3; print($x->winky_winky); ?> 型の指示 PHP5 では、オブジェクトのパラメータが別のオブジェクトのインスタンスである必要があることを指定できます。 例 10: 型の指示 process_a_foo($f); ?> パラメーターの前にオブジェクトの名前を明示的に指定でき、PHP5 はこのパラメーターがオブジェクトのインスタンスであることを認識することがわかります。 静的メンバ 静的メンバおよび静的メソッドは、オブジェクト指向プログラミング用語では「オブジェクトメソッド(クラスメソッド)」および「オブジェクト変数(クラス変数)」と呼ばれます。 「オブジェクト メソッド」は、オブジェクトがインスタンス化される前に呼び出すことができます。同様に、「オブジェクト変数」は、オブジェクトがインスタンス化される前に (オブジェクトの制御にオブジェクトのメソッドを使用せずに) 独立して制御できます。 例 11: オブジェクト メソッドとオブジェクト変数 例外処理 例外処理は、プログラム エラーを処理するための理想的な方法として認識されています。この概念は Java と C++ で利用可能です。このアプリケーションが PHP5 に追加されたことを嬉しく思います。 「try」と「catch」を使用してプログラム エラーを制御してみることができます。 例 12: 例外処理 divide(3,0) } catch (Exception $e) { echo $e->getMessage();n"; // ここに致命的な対策がいくつかあります } ?> 上の例では、中括弧内のステートメントを実行するために "try" を使用しています。エラーが発生すると、コードはそのエラーを "catch" 句に渡します。処理では、「catch」句でエラーをオブジェクトに渡すことを指定する必要があります。これにより、すべてのエラー情報を処理のためにオブジェクトに渡すことができるため、コード構造がより明確になります。エラー処理 独自のエラー制御クラスを例外クラスから派生するだけで、カスタム エラー処理コードを簡単に使用できます。必要なのは、コンストラクターと getMessage メソッドです。以下に例を示します。 カスタム エラー処理 data = $data; } function getMessage() { return $this->data . " により、"throw new" が使用できるようになります。 WeirdProblem($foo)" を使用してエラー ハンドラーをスローします。「try」コード ブロックでエラーが発生した場合、PHP5 は自動的にエラーを「catch」部分に渡して処理します。名前空間名前空間は、クラスや関数をグループ化するのに役立ちます。例 14: 名前空間 実際のアプリケーションでは、同じ名前の 2 つ以上のオブジェクトを宣言する必要がある場合があるので、名前を使用する必要がある場合に注意してください。異なることを行う場合は、それらを異なる名前空間に置くことができます (ただし、インターフェイスは同じである必要があります)。 翻訳者注: この記事は、上記のテキストから、PHP5 にいくつかの優れた新機能が追加されたことを嬉しく思います。現在の PHP5 は正式にはリリースされていませんが、この側面に興味のあるすべての PHP 愛好家にさらなる驚きをもたらすことを期待しています。 PHP 公式ニュース グループの更新情報は、news://news.php.net にログインしてご覧ください。新しいバージョンのリリース:) (Beyond PHP Avenger) 注: この記事はオリジナル記事であり、著作権は著者に帰属します。このサイトの許可なく商業的に転載することは禁止されています。非営利サイトや個人サイトへの転載は出典を明記してください