PHP の Multiple access type modifiers are not allowed というエラーの対処方法

PHP

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


アバター
後藤隼人 ( ごとうはやと )GitHubPython

ウェブ制作・開発やマーケティング、プロジェクト支援などをしています。