簡體   English   中英

訪問在類php的方法內部定義的公共變量

[英]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();
  1. 您已實例化$obj而不是$dbConfig因此請使用$obj
  2. 在類中,您需要將$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM