downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

新機能> <PHP 5.3.x における変更点
[edit] Last updated: Fri, 25 May 2012

view this page in

下位互換性のない変更点

既存の PHP5 のコードのほとんどは変更なしで動作するはずですが、 以下の下位互換性のない変更点については注意しましょう。

  • 引数を解釈する内部API が、PHP 5.3.x に同梱されている全ての拡張機能に 適用されるようになりました。つまり、互換性のないパラメーターが渡された場合、 この引数を解釈するAPIは NULL を関数に返させます。これにはいくつか例外が あります。たとえば get_class() 関数はエラーが起きた場合に 以前と同様 FALSE を返します。
  • clearstatcache() 関数は、デフォルトで絶対パスキャッシュの値をクリアしなくなりました。
  • realpath() 関数はプラットフォーム依存でなくなり、全てのプラットフォーム上で 同じ動作をするようになりました。その結果、 __FILE__ . "/../x" のような無効な相対パスは一切動作しなくなりました。
  • call_user_func() 関数 とその仲間は、呼び出し先が親クラスであっても $this の値を伝播させるようになりました。
  • 配列処理関数 natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip() そして array_unique() は、 引数としてオブジェクトを受け入れなくなりました。オブジェクトを使ってプロパティにアクセス する必要がある場合、オブジェクトを配列型にキャストする必要があります。
  • 引数を参照渡しする関数に値を渡した場合の振る舞いが変更されました。 以前は値渡しとして引数を受け取っていましたが、今は fatal error が発生するようになりました。 参照渡しを期待している関数に定数やリテラルを渡していたコードは、 いったんその値を変数に代入してから関数に渡すよう書き換える必要があります。
  • 新しい mysqlnd ライブラリは、MySQL 4.1 用の41バイトの新しいパスワードフォーマットを使用します。 古い16バイトのパスワードを使うと、mysql_connect() 系の関数は次のようなエラーメッセージを生成します。"mysqlnd cannot connect to MySQL 4.1+ using old authentication"
  • 新しい mysqlnd ライブラリは、mysql の設定ファイル (my.cnf/my.ini) を読み込まなくなりました (以前の libmysql は読み込んでいました)。 もし設定ファイルの内容に依存するコードを書いているのなら、 mysqli_options() 関数で明示的に読み込む必要があります。 つまり、PDO 固有の定数 PDO::MYSQL_ATTR_READ_DEFAULT_FILE および PDO::MYSQL_ATTR_READ_DEFAULT_GROUP は、 PDO の MySQL サポートが mysqlnd でコンパイルしない限り定義されないことになります。
  • SplFileInfoクラス と他のディレクトリ関連クラスは、 末尾の / を除去するようになりました。
  • __toString() マジックメソッドは引数をとらなくなりました。
  • 以下のマジックメソッド __get(), __set(), __isset(), __unset() および __call() は常に public にすべきです。また、static でないメソッドとしても定義できます。 メソッドのシグナチャは強制されます。
  • マジックメソッド __call() は、private や protected のメソッドに対するアクセスでも呼び出されるようになりました。
  • func_get_arg()func_get_args() および func_num_args() は、関数内で includerequire を使って読み込んだファイルのいちばん外側のスコープからは呼び出せないようになりました。
  • MHASH 拡張モジュール用の抽象化レイヤーができ、Hash 拡張モジュールをラップできるようになりました。 しかし、すべてのアルゴリズムをサポートしているわけではありません。 主なところでは s2k ハッシュアルゴリズムには非対応です。 つまり、s2k ハッシュは PHP 5.3.0 以降では使えないということです。

次に示すキーワードは予約語となり、関数名やクラス名などの識別子の名前として使えなくなりました。



新機能> <PHP 5.3.x における変更点
[edit] Last updated: Fri, 25 May 2012
 
add a note add a note User Contributed Notes 下位互換性のない変更点
mahbub at mahbubblog dot com 21-Sep-2010 09:36
If you're having the mysql connectivity problem for the short password format,there is a fix written by Mixu here

http://tinyurl.com/324pjer
Boris &#39;borzakov&#39; Ploujoux 14-Sep-2010 06:17
For those who often use the short open tag notations <? ... ?> and mostly <?= $var ?> (useful for template files) instead of standard notation <?php ... ?> : be careful !

In 5.3 version, the setting directive of the first notation is not PHP_INI_ALL anymore but PHP_INI_PERDIR.
In other words, you can't enable the "short_open_tag" directive directly with ini_set() function anymore ; you'll now have to set it in php.ini or httpd.conf (if you have access to it), or per-dir with .htaccess files.

See : http://www.php.net/manual/en/ini.core.php#ini.short-open-tag
munaw at munaw dot com 25-Aug-2010 08:32
gd_info():
    Note:
    Previous to PHP 5.3.0, the JPEG Support attribute was named JPG Support.

Be aware of this, in case you verify GD image support by this attribute!
mitek17 sobaka gmail.com 14-Apr-2010 11:42
After php version > 5.2.9 flush() stopped working. As a result the  output buffer will not be returned at all.
scott dot mcnaught at synergy8 dot com 07-Oct-2009 07:34
fopen('/dev/stdin/') no longer works
use fopen('php://stdin') instead

Cheers,
Scott
Chris Bolt 15-Sep-2009 07:03
call_user_func_array() no longer accepts null as a second parameter and calls the function. It now emits a warning and does not call the function.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites