我想访问一个类登录的公共变量而不扩展其他类检查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 提前谢谢。
答案 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。由于它是一个会话变量,您可以从所有控制器访问。