PHP5でのオブジェクト指向開発
絶版に伴い、校正前の原稿テキストを公開したものです。基本的に原稿そのままをHTML形式に変換したものですので、誤字/脱字、説明不足の箇所もあるかも知れませんがご了承ください。初出:「PHPによるデザインパターン入門」(下岡秀幸/畑勝也/道端良 著, 秀和システム, ISBN4-7980-1516-4, 2006年11月23日発売)
PHP5の特徴の1つとして、オブジェクト指向に関する機能強化が挙げられます。多くがPHP5から採用された新しいエンジンZend Engine2によるものです。
PHP4から強化・追加された主な機能は次の通りですが、それぞれの詳細についてはPHPマニュアルを参照してください。
- 新しいオブジェクトモデルの採用
- アクセス権のサポート(public/private/protectedキーワードの追加)
- 抽象クラスとメソッドのサポート(abstractキーワードの追加)
- interfaceの追加
- finalキーワードの追加
- オブジェクトの複製(__cloneメソッド、cloneキーワードの追加)
- コンストラクタとデストラクタ(__construct、__destructメソッドのサポート)
- クラス定数のサポート(constキーワードの追加)
- 例外のサポート(try、throw、catchの各キーワードの追加)
- 静的変数、静的メソッドのサポート(staticキーワードの拡張)
- タイプヒンティング機能
- SPL拡張モジュールの追加
PHPはJavaのようなオブジェクト指向言語ではありませんが、PHP5からサポートされた機能を使うことで、十分にオブジェクト指向開発をおこなうことができるようになりました。特に、オブジェクト指向の重要な要素である「カプセル化」を行うには必須であるアクセス権がサポートされたことは、非常に大きいと思います。従来は、すべてpublic扱いとなっていたため、厳密な意味でのカプセル化は不可能だったからです。
もう1つ大きなポイントとして、「新しいオブジェクトモデルの採用」があります。PHP4まではオブジェクトを扱う際に値として扱っていたため、非常に問題が起きやすく面倒でした。PHP5からはこれを改善し、オブジェクトを参照として扱うことができるようになりました。
機能としては地味ですが、タイプヒンティング機能も大きなポイントとなります。PHPは基本的に「型」がない言語ですが、タイプヒンティング機能を使うことで意図する型だけを引数として受け取ることを「保証」できるようになっています。
拡張モジュールも、オブジェクト指向への対応が進んでいます。従来は関数ベースでの提供だったのに対し、クラスとしても扱える拡張モジュールが増えています。中でもSPL拡張モジュールは、繰り返し操作でよく使われがちな各種イテレータをまとめています。イテレータについては、後のGoFパターンでも登場します。
また、Zend Frameworkを始めとするPHP5専用のフレームワークやライブラリも増えていますが、オブジェクト指向をふんだんに使ったものが目立ってきています。
このことからも、PHP5ではオブジェクト指向開発に十分耐えうるプログラミング言語になったと言えるでしょう。
|