是否可以定义一个变量,以便它可用于类中的每个函数

时间:2013-11-15 07:52:37

标签: php function class variables scope

是否可以定义一个变量,以便它可用于类中的每个函数......

例如:

class scope {

  private $db = null;

  function __construct($db) {
          $this->db = mysqli_init();
          return $this->db;
  }

  function uses_variable {
          $stmt =  $db->stmt_init();
  }

}

但是没有使变量全局化或使用一堆额外的不必要的代码或开销?

修改

我正在使用类似的东西将所有类加载到我的索引中:

class autoloader {
    public static $loader;

    public static function init()
    {
        if(self::$loader == NULL) {
            self::$loader = new self();
        }
        return self::$loader;
    }   

    public function __construct() {
        spl_autoload_register(array(this, 'library'));
        request::request();
        template::render();

    }

    public function library($class) 
    {
        set_include_path(get_include_path() . PATH_SEPARATOR . '/lib');
        spl_autoload_extensions('.class.php');
        spl_autoload($class);
    }


}

当我在uses_variable函数中调用变量时,如果我这样做,则会出现错误:

function uses_variable () {
     $stmt =  $this->db->stmt_init();
}

Notice: Undefined property: autoloader::$db,值得注意的是,函数user_variable是在另一个已经加载了自动加载器的类上调用的,我想知道这是否会改变我的项目范围,我还在学习>&lt ;

1 个答案:

答案 0 :(得分:0)

你的例子应该有用。问题是您正在访问$db范围内的uses_variable()。请改用$this->db

function uses_variable () {
     $stmt =  $this->db->stmt_init();
}

如果您有任何问题,应解决您的问题,但我想在您的问题中不是“复制/粘贴”代码。