PHP の Multiple access type modifiers are not allowed というエラーの対処方法
PHP の小ネタです。 PHP のコードを実行しようとすると次のようなメッセージの Fatal error が出て処理が止まることがあります。
Multiple access type modifiers are not allowed
これはクラスのメソッドやプロパティのアクセス修飾子( public
/ protected
/ private
)を複数重ねて付けていると発生するエラーです。
エラーはクラス定義のパース時(いわゆる compile time )に上がります。
例えば次のコードを実行するとこのエラーを再現することができます(動作確認には PHP 7.3 を使用しました)。
class WanWan {public protected function bark(): string{return 'Bow wow!';}}
public protected
が重複していて明らかにおかしいですね。
解決方法は単純にアクセス修飾子を正しくつけることです。
- public protected function bark(): string+ public function bark(): string
これまでに PHP を数万行ほど書いていますが、このエラーは初めて目撃したのでメモとして残しておきます……