0

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

例如:

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 是在另一个已使用自动加载器加载的类上调用的,我想知道这是否会改变我的项目范围,我仍在学习><。

4

1 回答 1

0

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

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

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

于 2013-11-15T08:01:10.370 回答