PHP 从另一个 class 呼叫 class
PHP calling class from another class
我想在另一个 class 中调用 PHP class 并得到以下错误:
Fatal error: Call to a member function quote() on a non-object
Class 1:
class logmein {
//Connect DB
function dbconnect(){
require_once('class.MySQL.php');
$db = new Db();
}
//login function
function login($username, $password){
//conect to DB
$this->dbconnect();
// Quote and escape form submitted values
$name = $db -> quote($username); //throwing error
$email = $db -> quote($password); //throwing error
}
}
Class 2:
class DB {
public function quote($value) {
$connection = $this -> connect();
return "'" . $connection -> real_escape_string($value) . "'";
}
}
我称之为:
$log = new logmein();
$log->login('James Bond', '007');
我需要做些什么才能让他们互相呼唤?或者还有其他方法可以做到这一点。非常感谢您的帮助!
$db
对象超出了从 dbconnect()
到 login()
的范围。将其设置为 class 属性,以便您可以在 class:
中的任何位置访问它
class logmein {
protected $db; // property available to this class and child classes
//Connect DB
function dbconnect(){
require_once('class.MySQL.php');
$this->db = new Db(); // say "$this" to refer to it
}
//login function
function login($username, $password){
//conect to DB
$this->dbconnect();
// Quote and escape form submitted values
$name = $this->db->quote($username); // works now
$email = $this->db->quote($password); // works now
}
}
您需要确保数据库可通过您的 class 函数访问,因此需要将其存储在 class 属性.
中
class logmein {
private $db; //store the database object
//Connect DB
function dbconnect(){
require_once('class.MySQL.php');
$this->db = new Db();
}
//login function
function login($username, $password){
//conect to DB
$this->dbconnect();
// Quote and escape form submitted values
$name = $this->db->quote($username);
$email = $this->db->quote($password);
}
}
也就是说,此设置将您的数据库与登录紧密耦合。考虑研究 'dependency injection' 和其他保持代码组件独立的方法。
我想在另一个 class 中调用 PHP class 并得到以下错误:
Fatal error: Call to a member function quote() on a non-object
Class 1:
class logmein {
//Connect DB
function dbconnect(){
require_once('class.MySQL.php');
$db = new Db();
}
//login function
function login($username, $password){
//conect to DB
$this->dbconnect();
// Quote and escape form submitted values
$name = $db -> quote($username); //throwing error
$email = $db -> quote($password); //throwing error
}
}
Class 2:
class DB {
public function quote($value) {
$connection = $this -> connect();
return "'" . $connection -> real_escape_string($value) . "'";
}
}
我称之为:
$log = new logmein();
$log->login('James Bond', '007');
我需要做些什么才能让他们互相呼唤?或者还有其他方法可以做到这一点。非常感谢您的帮助!
$db
对象超出了从 dbconnect()
到 login()
的范围。将其设置为 class 属性,以便您可以在 class:
class logmein {
protected $db; // property available to this class and child classes
//Connect DB
function dbconnect(){
require_once('class.MySQL.php');
$this->db = new Db(); // say "$this" to refer to it
}
//login function
function login($username, $password){
//conect to DB
$this->dbconnect();
// Quote and escape form submitted values
$name = $this->db->quote($username); // works now
$email = $this->db->quote($password); // works now
}
}
您需要确保数据库可通过您的 class 函数访问,因此需要将其存储在 class 属性.
中class logmein {
private $db; //store the database object
//Connect DB
function dbconnect(){
require_once('class.MySQL.php');
$this->db = new Db();
}
//login function
function login($username, $password){
//conect to DB
$this->dbconnect();
// Quote and escape form submitted values
$name = $this->db->quote($username);
$email = $this->db->quote($password);
}
}
也就是说,此设置将您的数据库与登录紧密耦合。考虑研究 'dependency injection' 和其他保持代码组件独立的方法。