簡體   English   中英

無法使對象在php中訪問擴展類方法

[英]Unable to make object in php to access extend class methods

我正在嘗試使用兩個不同的類在PHP中建立數據庫連接。 我的對象創建中有一個錯誤:

錯誤:解析錯誤:語法錯誤,意外的'$ obj'(T_VARIABLE),預期函數(T_FUNCTION)

該行發生錯誤: $obj = new UserController();

這是我的Connection類:

class Connection
{
    public $servername = "localhost";
    public $username = "root";
    public $password = "";
    public $dbname = "web-portal";


    function database (){    
        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
            return $conn;
        } else {
            return $conn;
        }
    }
}

這是我的UserController類:

class UserController extends Connection  {      
    $obj = new UserController();   
    //$obj->database(); 

    function getUser ($userId) {

        // Sql query to select record from user table
        $sql = "SELECT *  FROM User where user_id = ".$userId;

        //Excute  sql query
        $result = $conn->query($sql);

        //If record exists
        if ($result->num_rows > 0) {
            // output data of each row
            $row = $result->fetch_assoc();
            $conn->close();
            return $row;
        } else { 
            //If no record exists return row 0
            $row = 0;
            return  $row;
        }
    }
}

一些一般指導:

  • 面向對象集中於事物 (例如數據庫連接)和繼承,這允許事物的專門化(例如MySQL數據庫連接是數據庫連接的類型)。 但是UserController不是Connection ,所以這不是很好的繼承UserController應該繼承Controller或類似的東西。
  • 如果希望導入數據庫功能,則可以使用特征。 這樣,您就可以導入不屬於父類或祖先類的方法。 但是,特征並不是OO設計所必需的,如果您是初學者,則不妨暫時不要使用它們。
  • 在您的控制器中,您想要獲得一個連接,因此您可能需要$this->database()->query($sql)而不是$result = $conn->query($sql) $this->database()->query($sql) $conn仍然無法使用。
  • 您的查詢具有SQL注入漏洞 ,因此請不要將這種代碼實時發布。
  • 您將需要執行$obj = new UserController()但這將屬於另一個文件,如下所示:

     require_once 'Connection.php'; require_once 'UserController.php'; $controller = new UserController(); $row = $controller->getuser(1); print_r($row); 

您可能會發現,一種好的方法是瀏覽一些網上的優秀教程-從長遠來看,它可能比在沒有指導的項目上苦苦掙扎更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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