PHP7を使っているのに古い書き方をしていたので、システム大改修

2017年8月9日

PHP テクノロジー プログラミング 日記

今現在、個人的に作っているWordpressに変わる自分専用フレームワークを、ロンチタイミング目前にして、PHPを最新バージョンに対応してみたくなり、勢いだけで行った作業を備忘録として残しておきます。 今後、旧バージョンのPHP環境があった場合は、下記作業内容をデグレ作業内容として行うための備忘録です。 え?今更・・・っていう意見は、この際聞くまでもない、個人的には古い記述で上位互換を重要視してきていたんですが、 さすがにプログラム言語でphp7が主流になってきているのに、PHP5.2以下のバージョンで書き続ける事に少し嫌気がさしてきたので、 あくまで言語バージョンに対する対応作業として行おうと思います。

システム改修ポイント

phpファイルと、それを呼び出している関連モジュール全般が変更対象ファイルです。 プログラムはバージョンアップで下位互換性が無くなることはよくある話ですが、PHPも例外ではありません。 PHP 5.2.x から PHP 5.3.x への移行 | PHP PHPリファレンスサイトを見てもわかりますが、非常に細かなバージョンで差分が発生しています。 都度チェックしておかないと、かなり置いてけぼりになってしまいますね。

変更内容

そして肝心の今回の変更内容は以下の通りです。

1. class-methodの呼び出しをインスタンス処理せずに呼び出す

$class = new CLASS; $class->function ↓↓↓ CLASS::function

2. class内のmethodにstaticを付与する

class HOGE{ function test(){..} } ↓↓↓ class HOGE{ public static function test(){..} }

3. class内のローカル変数もstatic化する

class HOGE{ public $test = "test"; } ↓↓↓ class HOGE{ public static $test = "test"; }

ハマりポイント

そして、今回やってみてエラーログとの戦いになった件を報告 まず、実行時に発生していたエラーは下記の通り、 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Undefined class constant '%変数名' in %ファイルパス.php:159 どうやら、指定の変数名が無いと言われているようだ。 そして自ら凡ミスを発見! class HOGE{ public static $test = "test"; puclic static function aaa(){ echo self::test; } } 上記ではなく、下記が正解でした。 class HOGE{ public static $test = "test"; puclic static function aaa(){ echo self::$test; } } 以前のバージョンでは、 echo $this->test; となっていたので、すっかり$を付けることを忘れていたようです。 でも、実はこの方が検索もし易いしコーディングエラーも無くなるイメージがあるので、上位バージョンの方が整っているように思えます。 理不尽なのは下位バージョンだったんですね。 これからは過去を振り変わらずに、より上位を志してまっすぐに進んで行こうと心に誓いました。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。