4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

株式会社シンプルウェイAdvent Calendar 2020

Day 4

php5.4.x系からphp7.x系への作業まとめ

Last updated at Posted at 2020-12-03

最近久々にサーバーのリプレースに伴ってプログラムをphp5からphp7に上げる必要があり、再度調べたりしたので、今まであった修正を今後のためにまとめておきます。
ちなみに以下のような状況です。

  • 複数クライアントに展開しているASPの保守を担当
  • フレームワークは基本的にはfuelphpを使用、でも他社作成のコードの保守を行うこともある
  • 未だphp5環境のサーバーで動かしているクライアントがいるので、php5環境でも動作は保証したい
  • でも、一部php7に上げているクライアントがいるのでphp7対応にする必要がある
  • php5.4系からのアップグレードが多い

新しいオブジェクトを参照渡しで代入できない

自社開発のコードでは出会ったことがないですが、外部ライブラリ使っているとよくあります。
以下のようなコード。

class C {}
$c =& new C;

Parse error: syntax error, unexpected 'new' (T_NEW) in ***** と怒られます。

下位互換性のないその他の変更に記載があります。

countの引数にcountable ではない型を渡せない

これも自社開発のコードでは発生した記憶がないです。

count(null);

とかするとWarning: count(): Parameter must be an array or an object that implements Countableと怒られます。

php7.2の変更点に記載があります。

cURLでファイルをポストする時のオプションが違う

正確には、php5.6以上かそれ未満かでオプションが違う、というものです。
5.4系でも動くように作成したら、php7環境で動きませんでした。

以下の記事を参考にして対応しました。
こんな機会はなかなか無いとは思いますが・・・。
(参考)PHP: VER5.6以降 cURLでファイルをポストする

fuelphp1.8の場合に必要だった作業(おまけ)

1.8.2では対応されています。
(参考)PHP7.2でFuelPHPがエラーになるのを何とかする

PHP 5.4 系だと発生するエラー(おまけ)

empty()の引数に関数を渡す

php5.4以前に以下のような式を書くとエラーで怒られます。
php7からさわり始めた人はこのエラーに遭遇しやすいかも。

empty(trim($name))

emptyのパラメーターの説明にも記載があります。
empty() が任意の式に対応にもあるように、php5.5から引数渡せるようになってます。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?