オブジェクト指向言語に生まれ変わるPHP5[前編]
ベータリリース目前!? PHP5の新機能
小山 哲志
2003/4/25
現在開発中のPHP5は、オブジェクト指向機能が大幅に強化される。次世代PHPはどのような言語になるのか? ベータリリースを目前にひかえたPHP5の言語仕様を解説する(編集部)
現在開発中のPHPバージョン5(以下PHP5)。オブジェクト指向機能の大幅な強化が主な改善点であり、巷ではリリースに関する声もちらほら聞かれるようになってきた。
そこで、PHP5の開発経緯やその新機能について、ここでざっとまとめてみたいと思う。
Zend Engine 2.0の誕生
現在のPHPバージョン4(以下PHP4)の基本的な文法をつかさどっているのは、Zend Engineと呼ばれるスクリプトエンジンだ。これはPHP4の目玉機能の1つであり、洗練された構造かつ容易に拡張可能な言語エンジンは、それまでの場当たりな拡張を繰り返してきたPHP3に対する反省として生まれたものであった。PHP4のパフォーマンスは、当初の目標どおりPHP3を大きく上回り、Webプログラミングの世界において大きなシェアを占めるようになったのは、皆さんもご存じのとおりである。
Zend Engineを開発したイスラエルのZend Technologies Ltd.(以下Zend社)は、PHP4の開発と同時期に、PHP3の主要開発者であったZeev SuraskiやAndi Gutmansらによって設立された企業である。Zendの名称もZeevとAndiの名前をもじって付けられている。Zend社のビジネスモデルは、PHPのコアをZend Engineとしてオープンソースで提供しつつ、その周辺ツールを開発・販売して利益を上げるというものである。オープンソースソフトウェアを基盤にしたビジネスは、世界的にも苦戦している企業が多い中、比較的うまくいっている例といえよう。
■PHP4の限界
PHP4が大成功したおかげで、その利用用途もより広範囲になってきた。エンタープライズ用途にPHPを利用するという話もちらほら聞くようになってきたが、そこで問題になるのは、大規模サイトを構築する際のコードの再利用性の悪さだった。具体的には、PHP4のオブジェクト指向機能が弱かったので、Javaなどに慣れた技術者からはその点の不満が多く寄せられていた。
PHP4のオブジェクト指向機能も徐々に改善されつつはあったが、基本的な文法を大きく変更することもできず、開発者はPHPなりの記述方法を新たに開拓して目的を達成していた。
■Zend Engine 2.0の開発開始
そこでZend社のPHP中心開発者たちは、次なるPHPの言語エンジンとしてZend Engine 2.0(以下ZE2)の構想を2001年7月に発表した。そのホワイトペーパー「Zend Engine version 2.0: Feature Overview and Design」(http://www.zend.com/engine2/ZendEngine-2.0.pdf)で目標とされたのは、当然ながらオブジェクト指向機能の大幅な強化だった。
現在のPHP4 Zend Engineを場当たり的に拡張することは、昔のPHP3と同じ轍を踏むこととなる。その意味で、新たに言語エンジンのメジャーバージョンを上げ、仕様目標を明確に定めたことは、開発コミュニティから称賛をもって迎えられた。
ZE2の開発も、従来のZend Engineと同様にオープンソースモデルで行われている。最新ソースはCVSですべて公開され、オープンな開発者向けメーリングリスト(注)で、開発に関する議論が活発に行われている。開発開始当初はzend.comにあったCVSリポジトリも途中からcvs.php.netに移動し、ZE2がコミュニティのものであることを明確に打ち出した。
【注】 ZE2の開発者メーリングリスト(英語)に参加するには、engine2-help@lists.zend.comに空メールを送り、その返事の指示に従えばよい。 |
ZE2は現在、PHPの次のメジャーバージョンであるPHP5に採用されることが決まっている。リリースの予定は未定だが、2003年4月1日に配信されたZend社からのニュースレターによれば、間もなくベータリリースされるようだ。
1/2 |
Index | |
ベータリリース目前!? PHP5の新機能 | |
Page1 Zend Engine 2.0の誕生 PHP4の限界 Zend Engine 2.0の開発開始 |
|
Page2 PHP5の新機能 オブジェクトは参照渡しがデフォルト プロパティにアクセス制限を導入 メソッドにアクセス制限を導入 abstractクラスとabstractメソッド インターフェイス final宣言 |
オブジェクト指向言語に生まれ変わるPHP5 |
PHP関連記事 |
例外処理の実装を把握する PHP5で広がる! 開発環境(1) PHP4のサポートが終了し、いよいよPHP5への移行を視野に入れる時期が来た。PHP5の機能を生かした開発のポイントを紹介 |
|
クライアントPCに言語環境を入れる理由 Mac OS X+PHPでオールインワン環境(準備編) Webアプリ開発者に人気のMac OS X。効率的な開発のために複数バージョンのPHPを実行する環境を構築してみよう |
|
PHPに押し寄せるリスクと国際化の波 PHPカンファレンス2008レポート(前編) PHP4のサポートが完全に終了する。多くの新機能が投入されるPHP5.3へ移行か、国際化対応で開発が遅れるPHP6を待つか |
|
PHPによる大規模商用サービスの裏側 PHPカンファレンス2008レポート(中編) 企業のWebアプリケーション開発現場で利用されるPHP。開発現場の裏側にはさまざまなドラマが隠されている |
|
PHPユーザーは本当にほかの言語を知らないのか? PHPカンファレンス2008レポート(後編) PHPは本当にダメな言語なのだろうか。Perl、Ruby、Python、Java、JavaScriptの使い手が白熱した議論を行った |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|