『デフォルトで動的なプロパティの追加が非推奨』を解決する
| 2024/06/18当サイトでも使用しているWPのプラグインに不具合続出
PHP8以降になり、新機能が増えたのはいいんだが、不具合も非常に増えている。
まずデフォルトのエラーレポートレベルが変更されて、より多くのエラーや警告が表示されるようになったそうだ。
私はいつもdefine( 'WP_DEBUG', true )に設定しているので大量のエラーに脳みそを突っつきまくられている。
特に、custom field suite、All-in-One WP Migration、MW WP Formにエラーが大量に吐き出されている。
特に不良動作が起きているわけではないが、やはり対処する必要がありそうだ。
それではひとつ目Custom Field Suite。
管理画面で次の様なエラーが”Deprecated: Creation of dynamic property Custom_Field_Suite::$group_ids is deprecated in ~”
CatGPTで調べるとエラーの内容は「PHP 8.2では、デフォルトで動的なプロパティCustom_Field_Suiteの追加が非推奨(Deprecated)になっています。」ということらしい。
さらに調べると、PHP 8.2で新たに導入された属性(アノテーション)で「#[AllowDynamicProperties]というものがあり、クラスに対して動的なプロパティの追加を許可するものだそうだ。「この属性を使用することで、特定のクラスに対してその制約を緩和することができます。」とある。
その修正方法は?
CatGPTに聞いてみた。
つまり、8.2未満では下記で問題なかったコードが8.2以降ではエラーなるため
<?php
class MyClass {
public $existingProperty;
}
下記のように修正する必要があるそうだ。
<?php
#[AllowDynamicProperties]
class MyClass {
public $existingProperty;
}
1行追加するだけだ
では対象のコードはどこにあるか
修正方法はわかったが、肝心のcustom field suiteの動的プロパティCustom_Field_Suiteはどこにあるんだ?
調べるとあった。cfs.phpの最上段に記述されている。なので次の様に修正することでエラーを無くせた。
<?php
#[AllowDynamicProperties]
class Custom_Field_Suite
{
やることは簡単だがこの解決方法を見つけるのには、ほんとかなり苦労した。
残りのプラグインエラーの解消方法は次回で解説する。
おまけ
フィールドグループの編集画面でもエラーがでた。
修正方法は上と同じだ。
今後のことを考えると、アトリビュートによる一過性の修正ではなく根本的な解決を適用したい
動的プロパティをなくす
これまで行ってきた#[AllowDynamicProperties] による修正は、動的プロパティを使用するレガシーコードを動作させるための一時的な手段です。つまり、 今後PHP9などになると、必ず修正する必要が出てくると思われます。
したがって、 #[AllowDynamicProperties] を使用することは、コードのモダナイゼーションの過程における一時的な対策と見なすべきです。長期的には、コードベースを改善し、動的プロパティを使用しないようにすることが望ましいです。
そのためには動的プロパティを見つけて読み込み元のクラスへプロパティとして定義することが問題解決へとなります。
まず、警告文をみてみます。
動的プロパティをクラスのプロパティとして定義する
ここでは$group_idsが動的プロパティとありadmin_head.phpで使われているとあります。
admin_head.phpの指示場所をみるとたしかに$group_idsが使われています。
なのでおおもとのクラスclass Custom_Field_Suiteへプロパティとして定義します。
以上で修正完了です。あとはエラーの数だけ同じことをやればよいです。
これでPHPのバージョンが上がっても安心です。
- AllowDynamicProperties
- CatGPT
- Custom_Field_Suits
- Deprecated: Creation of dynamic property
- PHP8.2以降
- WEB開発
- フィールドグループの編集画面
- 不具合対応
- WEBの回復屋さん
『wordpress.PHP8の不具合をCatGPTが怪傑』関連のお薦め

汝は神なり?

wordpressPHP8の不具合をCatGPTが怪傑

MW‐WPFORM確認画面へ移動しない悩み解決

レイヤーの重なりを制御する

マウス座標の中心で画像を拡大縮小させるJavascript

メモリよ飛び放て!

PHP8以降の警告文戻り値の型チェックが厳格にへ対応する

GA4でユーザー動向を詳しく調べる

ミルクティーとTransform Rotateは順番が肝心

ページャーを複数設置。

週間人気ランキングを実装

Nullを引数へ渡せない問題をCatGPTが怪傑

初めてならサービスしとくわ

WEBタロットでちょっと息抜き
Information End
このページで紹介しているプログラムやビジュアルなどご依頼いただければ実装を賜ります。
お問い合わせはこちら