PHP4から移行できない開発者へ、PHP4 & 5比較データ

    後藤大地  [2008/12/17]

    PHP: Hypertext Preprocessor

    PHP4は8月8日(米国時間)にサポート終了となった。以降、PHP4がアップグレードされることはない。セキュリティの観点からPHP4を採用している場合にはできるかぎり早いタイミングでPHP 5.2系へアップグレードする必要がある。しかし、とは言ってもPHP4からなかなか移行できないという場合も多い。PHP4から5への変更にともなう学習コストが懸念されるし、アプリケーションの更新も骨が折れる。

    しかしアップデートしないわけにもいかない。Zend PHP 5 Certification BlogにDifferences Between PHP 4 and 5のタイトルのもとPHP4とPHP5の違いを簡単にまとめたものが公開されている。PHP5の学習を躊躇っている場合には概観を掴むためにもチェックしておきたい内容だ。簡単にまとめると次のような内容が紹介されている。

    言語機能の違い

    • PHP5では関数やクラスメソッドに渡すパラメータを特定のクラスやそのサブクラス、または配列に限定することができる。ただしそれ以外のスカラ型は指定しない方がいい
    • PHP5では文字列や配列操作に関する多くの新しい関数がコアプラットフォームに追加されている

    オブジェクトの違い

    • PHP5ではオブジェクトは参照渡しとなった。オブジェクトに関連付けられた変数はオブジェクトのコピーを作成するのではなく、オブジェクトへの参照が一つ増えることを意味する
    • PHP5ではオブジェクトをコピーする場合にはcloneコンストラクトと__clone()マジックメソッドを使う
    • PHP5ではコンストラクタとデストラクタには__construct()と__destruct()という名前を使う必要がある
    • PHP5ではインタフェースと抽象化クラスが導入されている
    • PHP5では定数、スタティックメソッド、プロパティをクラスのスコープ内で定義できる
    • PHP5ではクラスメソッドやプロパティにはpublic、private、protectedなどを指定できる
    • PHP5ではクラスやメソッドに継承を許可するかどうかを指定できる

    マジックメソッドの違い

    • PHP5には新しいマジックメソッドがいくつか追加されている
    • 定義されていないオブジェクトプロパティにアクセスする場合は__get()および__set()がコールされる
    • isset()に定義されていないプロパティが渡される場合は__isset()がコールされる
    • unset()に定義されていないプロパティが渡される場合は__unset()がコールされる
    • オブジェクトが直接echoまたはprint()される場合には__toString()がコールされる

    エクステンションの違い

    • PHP5ではSimpleXML、DOMXML、DOMXSL、Sablotron、PDO、hash、SPL、Reflectionなどのエクステンションが追加されたり、または新しい機能が追加されている

    エラーハンドリングの違い

    • PHP5では例外処理のハンドリングがサポートされている

    細かい違いや新しい機能の追加、古い機能から新しい機能への変更などほかにも注意すべき点はあるが、全体としてどういった変更が実施されたのかを把握するうえでは役に立つ内容だ。PHP4からアップグレードを躊躇っている場合には一度読んでおきたい内容だ。

    関連記事

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン