Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何仅为Codeigniter中的特定方法禁用构造函数?_Php_Codeigniter_Constructor - Fatal编程技术网

Php 如何仅为Codeigniter中的特定方法禁用构造函数?

Php 如何仅为Codeigniter中的特定方法禁用构造函数?,php,codeigniter,constructor,Php,Codeigniter,Constructor,我在这个用户控制器中有30多个方法。我不想只为这个方法创建另一个控制器 class User extends CI_Controller { public function __construct() { parent::__construct(); if(empty($_SESSION['userid'])){ $error['error'][] = "Please LogIn"; echo js

我在这个用户控制器中有30多个方法。我不想只为这个方法创建另一个控制器

class User extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        if(empty($_SESSION['userid'])){
            $error['error'][] = "Please LogIn";
            echo json_encode($error);
            exit;
        }
    }


    public function index(){
    }

    public function get_public_pages(){

    }


}
我不想在访问get\u public\u pages方法时运行构造函数。我该怎么做?

试试这个

public function __construct(){
  parent::__construct();
  $method = $this->router->fetch_method();  

  if(empty($method ) && $method != 'get_public_pages'){
    if(empty($_SESSION['userid'])){
        $error['error'][] = "Please LogIn";
        echo json_encode($error);
        exit;
    }
 }  
}

使用codeigniter会话而不是$\u会话['userid']谢谢,但这不是问题所在!:)您可以尝试vinod的答案,但构造函数将始终初始化,否则您可以尝试在
预控器钩子中移动代码并进行检查,但这样做太过分了。我只想禁用此get\u public\u pages方法的部分。我没有使用codeigniter会话!很好的解决方案,对我很有效。