PHP 4.0 の互換性
PHP 3.0 と Zend の互換性
Zend のスクリプトエンジンはPHP3.0に対して上位互換性を保つように設計されていますが、
若干非互換な点があります。以下にその内容を示します。
- 静的変数およびクラスメンバーの初期化を行なう際には、スカラー値のみを使用可能です。
(PHP 3.0 では、式も使用可能でした。)
静的な値以外で初期化を行なうことに意味があるのはまれなので、この変更による影響は小さいはずです。
- break および continue の有効範囲は、include() されたファイルまたは eval() が行われた文字列において
局所的なものとなります。この非互換性による影響は、ほぼないはずです。
- require() されたファイルにおいてreturn 文は使用できなくなりました。
PHP 3.0 においても動作させることは困難であったため、影響はかなり小さいはずです。
この機能を使用したい場合は、include() を代わりに使用して下さい。
- unset() は、関数から命令に変更されました。従来も関数としてドキュメントに記載されていなかったため、
おそらく影響はないものと思われます。
- "{$" という文字の並びは、カプセル化された文字列の中ではサポートされません。
print "{$somevar"; のようにこの文字の並びを含む文字列がある場合(PHP 3.0 では
文字 { と変数 $somevar の内容が出力れました。)、Zend では構文エラーとなります。この場合、
コードを print "\{$somevar"; と変更する必要があります。
この非互換性は、引用符付きの文字列の中での変数リファレンスが、Zend で完全にサポート
されたことによるものです。
- 関数 short_tags() は使用できなくなりました。将来のベータ版ではこの関数に替わるものが
使用できるようになる予定ですが、現在のところ設定ファイルのパラメータを使用する他には、
実行時にPHP タグの省略形を変更する手段はありません。
(.htaccess で変数を設定しても動作します。)
- PHP3 の動的拡張モジュール(Windowsではphp3_*.dll)は、PHP4 では使用できません。