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 を数万行ほど書いていますが、このエラーは初めて目撃したのでメモとして残しておきます……