Oliverの日記: 二日目その二: PHPとZend Engineの過去と将来
日記 by
Oliver
PHPのコア開発者の一人でZend Engineを書いたZeev Suraskiによるセッションで、PHPの歴史を簡単にまとめて、PHPの次期バージョンにむけてのデザインアイディアを披露。
新しいZend Engineのリリースは数ヵ月後を予定、PHP5はその後、すでにCVSレポジトリを公開中
- PHP/FI 1 &2:シンプルなスクリプトエンジン => lex & yaccすら使わずにすべて手で実装し、拡張性ゼロ、スクリプトを読みながら逐次実行、Apache専用
- PHP3:スクラッチからの書き直し、lex & yacc使用、拡張用API、とても限定されたオブジェクト指向、あいかわらず逐次実行、モジュールとして使う場合はApache専用
- PHP4:またもやほぼスクラッチから再実装、スクリプト全体のコンパイル後に実行 => 高速化、特にループが劇的に高速化、リファレンスカウントによるメモリ管理=>ループ内での明確的なmysql_free_result的な事が不要に、マルチスレッド対応、複数ウェブサーバに対応
Zend Engine 2 (PHP5?):
- Javaライクなオブジェクト指向、サンプルコードはJavaソックリ
- ->でリファレンス参照、$object->hoge()->foo()といったchainingに対応
- setHoge, getHoge 形式のアトリビュートアクセス (うげっ)
- オブジェクトはデフォルトでcall by reference (現在はオブジェクトでもcall by value)
- コンストラクタの名前は __constructor() (ひ~)
- 例外処理 (まんまJavaなtry/catch/throw/finally構文)
- 文字列内のオフセットの表記を $str[2] から $str{2}に変更、配列との明確な区別でミス防止と高速化
- Operator Overloadingは対応予定なし
- まだ決ってない事::多重継承、プライベートなメンバ変数 (いままでなかったんかい)、JITの可能性を検証中
Rubyistとしては「いゃ~ん」で前時代的なオブジェクト指向