![](/img/trans.png)
[英]PHP: access a variable from a class/method, both defined inside the same closure
[英]Access public variable defined inside method of a class php
我是php的新手,我想做的是在類外獲取$ conn變量。 我從另一個文件包含了這個文件,並嘗試使用$dbConfig->conn
獲取變量,但是它什么也不返回。
這是我在另一頁上得到的通知。 注意:未定義的變量:第8行的C:\\ xampp \\ htdocs \\ Chat \\ login.php中的dbConfig
<?php
class dbConfig {
public $host;
public $username;
public $password;
public $dab;
public $conn;
public function dbConnect() {
$conn = mysqli_connect($this->host,$this->username,$this->password);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
else{
echo "Connected successfully to server";
}
$db_selected = mysqli_select_db($conn, $this->dab);
if (!$db_selected) {
// if the given database doesn't exists
// creates new database with that name
$db_sql = 'CREATE DATABASE chatapp';
// verify the database is created
if (mysqli_query($conn, $db_sql)){
echo "Database chatapp already exists or created successfully\n";
} else {
echo 'Error creating database: ' . mysqli_error() . "\n";
}
}
// creating tables
$table_sql = "CREATE TABLE IF NOT EXISTS users (".
"uid INT PRIMARY KEY AUTO_INCREMENT,".
"username VARCHAR(30) UNIQUE,".
"password VARCHAR(50),".
"name VARCHAR(100),".
"email VARCHAR(70) UNIQUE); ";
// verify the table is created
if (mysqli_query($conn, $table_sql)) {
echo "Table: users already exists or created successfully\n";
} else {
echo 'Error creating table: ' . mysqli_error($table_sql) . "\n";
}
}
}
$obj = new dbConfig();
$obj->host = 'localhost';
$obj->username = 'root';
$obj->password = '';
$obj->dab = 'chatapp';
$obj->dbConnect();
$obj
而不是$dbConfig
因此請使用$obj
$conn
分配為對象屬性 $this->conn = mysqli_connect($this->host,$this->username,$this->password);
然后在類中使用$this->conn
。
問題是您如何在方法內部引用類變量。 看:
public function dbConnect() {
$conn = mysqli_connect($this->host,$this->username,$this->password);
...
在這里,您將創建一個名為$conn
的局部變量(僅限於當前方法的作用域)。 因為您正在使用該類的實例,所以需要使用$this
訪問您的類成員:
$this->conn = mysqli_connect(...);
查看文檔以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.