CakePHP2 ‘string’ is deprecated.intelephense(1007)
2021/12/11
つい最近までPHPのプログラムを、素のVim(lspとか使わない)で書いてたんですが、使ってるPHPのバージョンも7.4になったので、ステップ実行等いろいろ利点のある環境にしてみようと思い、VSCode上でPHPのプログラムを書くようになりました。
VSCodeで PHPの開発環境を整えると、間違ったところとかコメントで記述している型と違う使い型をしているところも教えてくれるので、プログラムの品質向上に貢献しているのがいい感じです。
‘string’ is deprecated.intelephense(1007)
PHP7.4 を使ってるので、メソッドの引数や戻り値だけでなく、プロパティにも型を付けるようにしてるんですが、string型を定義すると、'string' is deprecated.intelephense(1007)
という警告が表示されて、頭を悩ませていました。
inteliphence で、string を型定義すると、'string' is deprecated.intelephense(1007)
— smeghead (@smeghead) November 30, 2021
が出る。いまだに原因がわからない。
ググると以下を見付けた。
わかった。CakePHPに Stringというクラスがあって、deprecated が指定されてた。
— smeghead (@smeghead) November 30, 2021
- lib/Cake/Utility/String.php
/** * String handling methods. * * @package Cake.Utility * @deprecated 3.0.0 Deprecated since version 2.7, use CakeText class instead. */class String extends CakeText {} |
フレームワークに、String というクラスが存在していて、既に@deprecated が指定されているんだけど、プリミティブな小文字始まりの string型の定義箇所でも、intelephense が警告を表示していたというオチでした。
この String クラスの @deprecated コメントを無効化したら、頭を悩ませていた警告が表示されなくなりました。