|  | 
 
  下位互換性のない変更点
   既存の 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) を読み込まなくなりました (以前の libmysqlclient は読み込んでいました)。
     もし設定ファイルの内容に依存するコードを書いているのなら、
     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 は、関数内で
     include や require
     を使って読み込んだファイルのいちばん外側のスコープからは呼び出せないようになりました。
    
   
    
     MHASH 拡張モジュール用の抽象化レイヤーができ、Hash
     拡張モジュールをラップできるようになりました。
     しかし、すべてのアルゴリズムをサポートしているわけではありません。
     主なところでは s2k ハッシュアルゴリズムには非対応です。
     つまり、s2k ハッシュは PHP 5.3.0 以降では使えないということです。
    
    
   次に示すキーワードは予約語となり、関数名やクラス名などの識別子の名前として使えなくなりました。
   |