3

我正在研究 codeigniter 3。我使用 composer psr-4 自动加载。我启用作曲家配置为 $config['composer_autoload'] = FCPATH."vendor/autoload.php";

我的 composer.json 自动加载为

"autoload":{
  "psr-4":{
      "App\\":"application"
        },
  "classmap":["system"]
  }
}

我有一个抽象Controller.php控制器

<?php namespace App\controllers;
use CI_Controller;
abstract class Controller extends CI_Controller{}

效果很好。但主要问题是当我写为控制器时

<?php namespace App\controllers;
use App\controllers\Controller;
use App\models\User;
class Welcome extends Controller {
    public function index()
    {
        $this->load->view('welcome_message');
    }
}

不起作用。如果我删除namespace App\Controllers;一切都很好。主要问题在哪里?谢谢你。

4

2 回答 2

0

Codeigniter 不像 Symfony、Zend、CakePHP。它只是一个易于理解和使用的基本 PHP 框架。

<?php 
namespace App\controllers;
use App\controllers\Controller;
use App\models\User;
class Welcome extends Controller {
    public function index()
    {
        $this->load->view('welcome_message');
    }
}

在上面的代码中,您使用了代码namespace中的use关键字。实际上不需要像那样加载控制器。


如果要添加新控制器。就这样使用。

文件名 =admin.php

<?php

    if (!defined('BASEPATH'))
        exit('No direct script access allowed');

    class Admin extends CI_Controller {
    }

您可能会遇到的一些问题

这仅对控制器就足够了吗?

是的。此代码仅足以创建新控制器。

我们可以在控制器内部使用多少个功能

您可以使用N 个函数。但是当它超过 300 行最好分成两部分时,这很常见

于 2015-12-28T07:10:55.517 回答
0


您正在修改 CI 以使用命名空间,但由于路由过程,您不能在控制器中使用命名空间。Route 将无法找到控制器的方法。

于 2018-07-08T09:36:01.083 回答