【问题标题】:Codeigniter 4 Cannot declare class App\Controllers\User_Public\Home, because the name is already in useCodeigniter 4 无法声明类 App\Controllers\User_Public\Home,因为该名称已在使用中
【发布时间】:2021-11-21 02:03:45
【问题描述】:

我已经搜索了 stackoverflow,确实有很多关于这个错误的问题,但对于我的生活,我看不出我做错了什么。这是我的路线文件;

$routes->get('/', '/User_Public/Home::index');
$routes->get('about-us', '/User_Public/Home::aboutUs');
$routes->get('contact-us', '/User_Public/Home::contactUs');

这是我的目录结构:

这是 App/Controllers/User_Public/Home 的内容

namespace App\Controllers\User_Public;

use App\Controllers\User_PublicController;
use App\Models\UserModel;

class Home extends User_PublicController
{

public function __construct()
{
    // run the parent's contruct
    parent::__construct();
}

public function index()
{
    //$this->cachePage(DAY);
    // .= will add to exisiting css files.
    $this->data['user_public_css']  .=   '<!-- user_public_css extened -->
                                            <link rel="stylesheet" 
                      href="'.base_url().'/user_public/theme/bs4/css/carousel.css">';
                                            
    $this->data['active_menu']          = '';
    return view('user_public/home/index', $this->data);
}

public function aboutUs()
{
    //$this->cachePage(DAY);
    $this->data['active_menu'] = 'aboutUs';
    return view('user_public/aboutUs/index', $this->data);
}

public function contactUs()
{
    $this->data['active_menu'] = 'contactUs';
    return view('user_public/contactUs/index', $this->data);
}

}

这是错误;

Fatal error: Cannot declare class 
App\Controllers\User_Public\Home, because 
the name is already in use in/var/www/XXXXXXXdomain/api.example.com/app_dir/app/Controllers/User_Public/Home.php on line 0

任何指针表示赞赏。

【问题讨论】:

  • 这很可能是因为app 目录下除app/Controllers/User_Public/Home.php 之外的文件之一在命名空间namespace App\Controllers\User_Public; 下有一个标记为Homeclass 尝试搜索具有此命名空间的文件在他们的文件内容中。
  • 没有其他类在任何地方使用 Home 方法
  • 我指的不是这个。 尝试搜索文件内容中包含此命名空间的文件。
  • 运行时得到什么输出:grep -riF "namespace App\Controllers\User_Public" . 在你的项目目录中?
  • 另外,你在项目目录下运行:grep -riF "class Home" .,还会得到什么输出?

标签: php codeigniter namespaces codeigniter-4


【解决方案1】:

检查控制器“App\Controllers\User_PublicController” 查看它是否扩展了任何名为“Home”的控制器或检查基本控制器是否扩展了任何名为“Home”的控制器

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2019-09-24
  • 2021-08-17
  • 2020-06-21
  • 2021-06-13
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多