生活の跡

個人的な備忘録

FuelPHPエラー:Cannot declare class Controller_○○, because the name is already in use

概要

タイトルの通り、FuelPHPで「この名前はすでに使われているので、Controller_○○クラスは定義できません」と言われました。

状況

コントローラのphpファイルをサブディレクトリに入れたらエラーになりました。同名クラスのコントローラはないので、なぜ「すでに使われている」と言われているのかわかりません。

コントローラの内容は次の通りです。

APPPATH/classes/controller/sub/inner.php

<?php

class Controller_Inner extends Controller
{
  public function action_index()
  {
    echo 'hello';
  }
}

原因

サブディレクトリ内にコントローラを配置する場合は、コントローラ名にサブディレクトリを含める必要がありました。ドキュメントに書かれています。

コントローラ - 概要 - FuelPHP ドキュメント

つまり、以下のようにコントローラ名を Controller_Sub_Inner に修正したら正しく表示できました。

<?php

class Controller_Sub_Inner extends Controller
{
  public function action_index()
  {
    echo 'hello';
  }
}

おわりに

ドキュメントに書かれている基本ルールを逸脱していたのはわかりました。ただ、「この名前はすでに使われている」というエラーメッセージだったため、気づくのに少し時間がかかりました。