0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FuelPHPのコントローラーでnamespaceを設定すると"Cannot redeclare class"とコンパイルエラーが出る

Posted at

前提

現在FuelPHPを使って開発しており、その中でコントローラーにnamespaceを設定しても全て"Cannot redeclare class"の一点張りで詰まってめちゃ時間食ったので備忘録に。

環境

FuelPHP:version1.9

解決方法

/app/config/config.php内に

/app/config/config.php
'controller_prefix' => 'Controller\\',

この1文を加えるだけで解決しました!

原因

原因を調べてみても知識がないため、あまり理解できませんでした...(sorry)
下はchatGPT原文ママです。有識者の方、原因についてご教示いただけると助かります🤦‍♂️

FuelPHPでは、デフォルトでコントローラーのクラス名を解決する際、名前空間(namespace)を含める必要があります。しかし、設定ファイルで「'controller_prefix' => 'Controller'」という設定を行うことで、名前空間のプレフィックスを指定することができます。このプレフィックスを指定することで、FuelPHPはコントローラーのクラス名を正しく解決できるようになります。
具体的には、例えば「Controller_Home」というコントローラーを呼び出す場合、プレフィックスを含めた「Controller\Home」の形式でクラス名を解決するようになります。したがって、コントローラーのクラス名とファイル名、そして名前空間の設定が整合していない場合でも、この設定により正しくクラスを解決することができます。
この設定を追加することで、FuelPHPのオートローディングがコントローラークラスを見つける際に正しい名前空間を考慮するようになり、クラス名の重複や名前空間の不整合に起因するエラーが解消されたと考えられます。

閲覧いただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?