SourceForge.JP: Open Source Software

Login Create Account Help [en][ja]
アレゲなら Slashdot
OSS なら SF マガジン
Search

Magazine 特集記事

最新Webブラウザに向けたWebサイト開発テクニック[10/31更新]

2008年になり、FirefoxやInternet Explorer、Operaといった主要Webブラウザが相次いでメジャーバージョンアップ...

SourceForge.JPを活用する[10/10更新]

本特集では、CVSやSVNといったバージョン管理システムの使い方や、SSH/SCPによるリモートログイン/ファイル転送...

オススメFirefox拡張 [9/5更新]

Firefoxの魅力の1つに、豊富な“拡張”の存在がある。素の状態のFirefoxはIE 7やOperaといった...

ソフトウェア開発に役立つOSSのツール群

ベンダーが体系的なツール群を提供しているプロプライエタリな開発環境とは対照的に、オープン...

Linuxベンチマーキング

ここでは、Linuxシステムの性能評価に使えるベンチマークツールの紹介記事と、ベンチマーク...

ディストリビューション・レビュー

バザールモデルで開発されているLinuxの世界では、日々、新たなディストリビューションが...

SourceForge.JP活用特集

CVS/Subversionを使ったバージョン管理(後編:SVNを使ったバージョン管理)

前編、中編ではバージョン管理の基本事項やCVSについて解説してきたが、後編となる本記事では、Subversionの利用について解説する。...

CVS/Subversionを使ったバージョン管理(中編:CVSを使ったバージョン管理)

前編ではバージョン管理システムの基本事項について解説を行ったが、中編となる本記事では、CVSを使ったバージョン管理について解説する。...

CVS/Subversionを使ったバージョン管理(前編:バージョン管理の基礎)

本記事では、まずバージョン管理システムの基本的な考え方と、用語について解説する。...

Windows用SCP/SFTPクライアント「WinSCP」で安全なファイル転送

ネットワーク経由で安全にファイルを転送する方法として、SCPやSFTPがある。最近では、セキュリティ向上のため...

PHP 5の新機能

2004年10月22日 11:56AM
  • スラッシュドットにタレコむ
  • あとで読む
米Zend Technologiesは、この7月に、Webでのプログラミングで広く使われているスクリプト言語PHPの新バージョンを発表した。このバージョン5では、多くの点で抜本的な強化が図られている。以下、そのいくつかを紹介しよう。

PHP 5で最も大きく変わったのはオブジェクトモデルだ。一から設計し直され、旧版に比べて、オブジェクト指向パラダイムに、より忠実なモデルが採用されている。旧版には、オブジェクトの扱い方に大きな欠点があった。PHPのオブジェクトの挙動は、JavaやC++など、他のオブジェクト指向言語から期待されるものと異なっていたのだ。一般のオブジェクト指向言語より単純なアプローチが採用されていたためだが、この違いは、真の――この業界でオブジェクト指向とされている意味における――オブジェクト指向でPHPを使いたい人にとっては埋めがたい溝となっていた。

従来採用されていたオブジェクトモデルの最大の技術的欠陥は、オブジェクトが参照ではなく、値で渡されるという点にある。熟練のオブジェクト指向開発者にとって、これはオブジェクト階層を作成したり操作したりする際に一連の落とし穴となる。また、そのいくつかを解決するには複雑な構文が必要だ。技術的には、これがPHPの巨大化する原因となっていた。呼び出すたびにオブジェクトのクローンを作って渡すからである。

PHP 5では、オブジェクトは参照渡しになっている(デフォルト)。これは他のオブジェクト指向言語とほぼ同様の振る舞いであり、オブジェクト指向言語を使っている人にとっては扱いやすい。ただし、旧版のPHPオブジェクトモデルに対するほぼ透過的な後方互換性も残されている。

こうした改訂の中心にあるのは、Zend Engineの第2バージョンである。PHP 5のオブジェクト参照に関する挙動は、オブジェクトの各インスタンスに割り当てられた特別なハンドルが支えている。以下に挙げるオブジェクト指向関連機能も、このコアPHPエンジンによるものである。

  • インタフェースが改善され、クラスの実装と階層の作成に関する柔軟性が大幅に向上した。
  • 保護クラスおよびプライベートクラスのメソッドとメンバが強化され、一般のオブジェクト指向言語と同様にクラスデータをカプセル化できるようになった。
  • 静的な関数と変数が改善され、一般のオブジェクト指向言語と同様に、唯一のインスタンスを持つオブジェクトつまりシングルトンを容易に扱えるようになった。
  • リフレクションで、同じクラス内のデータのイントロスペクションが可能になった。
  • 例外:旧版にはクラスエラーの捕捉に関する機能がなかったが、PHP 5では、ランタイム例外を検出するためのcatchセクションを自然なオブジェクト指向構文で定義できるようになった。

オブジェクト指向言語に典型的に見られるこうした機能が強化されただけでなく、JavaやC++から期待される機能の多くも追加されている。しかし、2番目に大きな強化点と言えば、Javaまたは.Net――採用数で見れば、現在の市場における2大開発環境だろう――で書かれたコンポーネントの呼び出しで統合が強化され高速化された点だ。これらはすべて、エンジンを再設計した賜である。

広く利用されているもう一つの技術XMLへの対応も大きく変更された。旧版では、DOMやSAXの構文解析あるいはXSL変換のようなXMLの中核処理には各種ライブラリの寄せ集めが使われていたが、新版では、そのためのオープンソースライブラリlibxml2が採用された。その結果、SOAPサポートもPHP 5の組み込みC拡張として書き直され、旧版でSOAPアプリケーションを実行する際に広く使われていたPEARモジュール(PHPで書かれている)が大幅に強化された。

Webアプリケーションではデータベースはよく使われるコンポーネントだが、主要なリレーショナルデータベースとのインタフェースも改善された。PHP 5のディストリビューションには新しいMySQL拡張が付属しており、これにより、prepared statementやSSLやトランザクション制御など、MySQL 4.1以降で提供されている機能が利用できるようになった。組み込みSQLデータベースSQLiteもサポートされている。したがって、フル装備のデータベースではなく軽量版を使いながら、PHP 5の持つ最新のオブジェクト指向機能を利用することができる。

以上のほか、アプリケーションのコードの中からPerlスクリプトを実行したり、HTMLコードを構文解析するためのオープンソースライブラリTidy

を利用したりすることもできるようになった。さらに、新しいメモリ管理ではRAMの使用法も改善されている。

Daniel Rubioは、エンタープライズソフトウェアの開発、研修、コンサルティングを専門としメキシコに本拠を置くOsmosis Latina社の上級コンサルタント。

Daniel-Rubio(2004年10月19日(火))
2007年07月01日 07:05PM 更新