PHP7.1 の環境では警告が出ていなかったのに、PHP7.4 に変えたら Deprecated が表示されるようになったので、その調査と解決策。
Deprecated とは
Deprecated は非推奨である警告で、その機能はそのうち使えなくなることが考えられる。急ぎではないけど、いずれは対応しなくてはいけなくなる。
問題となったDeprecated
表示された警告は下記の通り。
Deprecated: Array and string offset access syntax with curly braces is deprecated in /***/phpQuery-onefile.php on line 2156
Deprecated: Array and string offset access syntax with curly braces is deprecated in /***/phpQuery-onefile.php on line 2171
Google 翻訳に聞くと、非推奨: 中かっこを使用した配列と文字列のオフセット アクセス構文は非推奨ということらしい。
PHP7.4 くらいから表示されるようになった警告か?
参考リンクで表示されている警告は同じではが、問題的には同じようなことだと思う。
Deprecated: Array and string ~ の対処方法
配列では波括弧{}を使わずに角括弧[]を使うようにすればよい。
【その1】phpQuery ライブラリを修正する
警告が出ている行(line 2156、line 2171)を下記の通り修正する。
// 修正前
if ($param{0} == 'n')
else if (mb_strlen($param) > 1 && $param{1} == 'n')
// 修正後
if ($param[0] == 'n')
else if (mb_strlen($param) > 1 && $param[1] == 'n')
他にも $param{ で検索をかけると何か所が出てきたのでその部分を同様に修正した。
個人的なツールとしてしか使ってないので、他にも Deprecated が出たらその都度修正していけばいいかと考えていた。
【その2】php-simple-html-dom-parser に乗り換える
phpQuery が2009年から更新されていないのは、以前から気になっていたが、いろいろと個人的なツールを作るのに使っているので、二の足を踏んでいたのと、他に適当なライブラリを知らなかったので、放置してきたが、php-simple-html-dom-parser というのが良さそうなので乗り換えを検討中。
php-simple-html-dom-parser も更新が止まっている気がするのが少し気がかり。
【その3】Goutte に乗り換える
Goutte も使われているみたいなので乗り換え候補。
【番外編】Python に乗り換える
Python のことについては全く知識がないけど、Python といえばスクレイピングというイメージがなぜかある。
そもそも、Webサーバで動くのかとか、今自分が使っているツールを移植することができるか?とか全くわからないが、これを機に Python を触ってみるのもいいかもしれないと思い始めている。
コメント