残り一年! PHP4からPHP5への移行

第2回 PHP4.4以前からの移行とPHP5におけるオブジェクトの仕様変更

この記事を読むのに必要な時間:およそ 4.5 分

$this変数の取り扱い

PHP5からオブジェクト自身を表す$this変数が上書きできなくなりました。$thisを上書きすると$thisオブジェクトが別のオブジェクトに変わってしまいます。PHP4の$thisオブジェクト変数が書き換えれる仕様はあまり有用な使い方はできないのでほとんど使われていないと思います。筆者の知っている例では古いPukiwikiは$thisを書き換えていました。

例:$thisの書き換え

<?php
class foo {
   function __construct() {
      $this = 123;
      $return &$this;
   }
}
$obj = new foo;
var_dump($obj);
?>

PHP5

Fatal error: Cannot re-assign $this in - on line 4

PHP4

object(foo)(0) {
}

PHP4ではエラーなく終了しますが,PHP5ではFatalエラーになりスクリプトの実行が停止します。このエラーは回避する設定などは用意されていないので,$thisの書き換えを行わずに実行できるようコードを修正しなければなりません。

まとめ

今回はPHP4.4より古いバージョン向けに移行に必要と思われる情報とオブジェクト関連の仕様変更を紹介しました。オブジェクト関連の仕様変更は一部のみ紹介しています。 次回もオブジェクト関連の仕様変更,注意点などを解説します。

著者プロフィール

大垣靖男(おおがきやすお)

University of Denver卒。同校にてコンピュータサイエンスとビジネスを学ぶ。株式会社シーエーシーを経て,エレクトロニック・サービス・イニシアチブ有限会社を設立。
オープンソース製品は比較的古くから利用し,Linuxは0.9xのころから利用している。オープンソースシステム開発への参加はエレクトロニック・サービス・イニシアチブ設立後から。PHPプロジェクトでは,PostgreSQLモジュールのメンテナンスを担当している。

URLhttp://blog.ohgaki.net/

著書