第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在類中使用全局變量

在類中使用全局變量

繁華開滿天機(jī) 2019-07-09 15:11:11
在類中使用全局變量我正在嘗試創(chuàng)建一個(gè)分頁類,并從類外部使用一個(gè)變量。但是它給了我致命的錯(cuò)誤“調(diào)用非對(duì)象上的成員函數(shù)Query()”。這是索引文件:$db = new DB_MySQL("localhost", "root", "", "test");  // connect to the databaseinclude_once("pagi.php");  $pagination = new pagi();$records = $pagination->get_records("SELECT * FROM `table`");這是pagi.php文件:class pagi {     public function get_records($q) {         $x = $db->query($q);         return $db->fetch($x);     }}是否可以從類的外部使用這個(gè)變量,而無需在類中創(chuàng)建一個(gè)新變量?
查看完整描述

4 回答

?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

雖然我確實(shí)同意依賴模型很好,但是對(duì)于數(shù)據(jù)庫,我個(gè)人使用一個(gè)靜態(tài)連接,它可以用于數(shù)據(jù)庫類的所有實(shí)例和CREATE實(shí)例,以便在需要時(shí)進(jìn)行查詢。以下是一個(gè)例子:

<?php//define a database classclass DB {
    //the static connection.
    //This is available to all instances of the class as the same connection.
    private static $_conn;

    //store the result available to all methods
    private $result;
    //store the last query available to all methods
    private $lastQuery;

    //static connection function. connects to the database and stores that connection statically.       
    public static function connect($host, $user, $pass, $db){
        self::$_conn = mysqli_connect($host, $user, $pass, $db);
    }

    //standard function for doing queries. uses the static connnection property.
    public function query($query){
        $this->lastQuery = $query;
        $this->result = mysqli_query(self::$_conn, $query);
        //process result, return expected output.
    }}//create connection to the database, this connection will be used in all instances of DB classDB:
    :connect('local', 'DB_USER', 'DB_PASS');//create instance to query$test = new DB;
    //do query$test->query("SELECT * FROM TABLE");//test functionfunction foo(){
    //create instance to use in this function
    $bar = new DB;
    //do query
    $bar->query("SELECT * FROM OTHER_TABLE");
    //return results
    return $bar->fetchArray();}

這樣,我就可以在任何函數(shù)、方法.等中創(chuàng)建所有我想要的DB實(shí)例,并使用該類的本地實(shí)例來執(zhí)行所有查詢。所有實(shí)例都使用相同的連接。

但是要注意的一點(diǎn)是,這只允許每個(gè)定義的類連接到數(shù)據(jù)庫,但是我只使用一個(gè),所以這對(duì)我來說不是問題。


查看完整回答
反對(duì) 回復(fù) 2019-07-09
?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

可以添加db連接($db)的調(diào)用。get_records方法:

這里只有相關(guān)的代碼行:

第一個(gè)文件:

$records = $pagination->get_records("SELECT * FROM `table`", $db);

第二個(gè)檔案:

public function get_records($q, $db) {


查看完整回答
反對(duì) 回復(fù) 2019-07-09
?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

到目前為止,其他答案肯定比使用全局方法更可取,因?yàn)檫@會(huì)破壞您的封裝(例如在調(diào)用該方法之前需要定義該對(duì)象)。

在方法簽名或不使用類中強(qiáng)制執(zhí)行這一點(diǎn)要好得多。


查看完整回答
反對(duì) 回復(fù) 2019-07-09
  • 4 回答
  • 0 關(guān)注
  • 1155 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)