访问另一个类中的类的公共变量都扩展了CI_Controller类codeigniter php

时间:2015-05-31 08:53:21

标签: php codeigniter class oop inheritance

我想访问一个类登录的公共变量而不扩展其他类检查codeigniter这里变量是类登录中的$ fb_data 这是我的班级登录代码

class Login extends CI_Controller
{

  public $fb_data;
    public function __construct()
    {
        parent::__construct();
        $this->ci =& get_instance();
        $this->load->library(array('session', 'lib_login'));
        $this->load->model('users_model');
        if (!isset($this->fb_data['me']) ) {
          $this->fb_data = $this->lib_login->facebook();
        }                

    }
     public function facebook()
    {               
        if (isset($this->fb_data['me'])) {
            echo "<pre>";
             var_dump($this->fb_data);
            echo "</pre>";                 
            echo '<a href="'.site_url("login/destroy").'">logout</a>';
        } else {
            echo '<a href="' . $this->fb_data['loginUrl'] . '">Login</a>';
        }
    }
}

这是我的班级检查代码

class Check extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library(array('session', 'lib_login'));
        $this->load->model('users_model');                       
    }       
    public function index()
    {        
        if (isset($this->fb_data['me'])) {
            echo "<pre>";
             var_dump($this->fb_data);
            echo "</pre>";     
            echo '<a href="'.site_url("login/destroy").'">logout</a>';
        } else {
            echo '<a href="' . $this->fb_data['loginUrl'] . '">Login</a>';
        }
    }


}

但每当我调用check / index函数时,它都会给我这个错误

Message: Undefined property: Check::$fb_da

他们是否可以访问$ fb_data 提前谢谢。

3 个答案:

答案 0 :(得分:0)

首先在check.php中包含login.php,如

require_once 'login.php'

然后创建一个登录的

$login = new Login();

现在访问fb_data

$login->fb_data;

答案 1 :(得分:0)

当您提出请求时,您可以使用在该请求中实例化的任何内容。那些尚未实现的东西无法使用。所以Check.php控制器不知道什么是$fb_data,因为它被计算为局部变量。如果你想在$fb_data中有一些值并使用伪$this->fb_data来获取它,则应该在使用工作类扩展的更高实例中设置它。答案是否定的。但是您可以APPPATH . 'core/MY_Controller.php'生成APPPATH . 'controllers/Login.php'和/或APPPATH . 'controllers/Check.php'文件中稍后要使用的所有代码。为此,这些文件需要MY_Controller而不是CI_Controller

答案 2 :(得分:0)

您可以创建会话变量(如fb_data_me)并在登录后将其设置为1,并在注销时将其设置为0。由于它是一个会话变量,您可以从所有控制器访问。