天天看點

TP5學習總結

1.一個類主要包括屬性和方法

2.public表示通路修飾符,意思是公開的,沒有隐藏。在類的外部是可以通路這些公開的屬性的方法function是定義方法的關鍵字。

3.private:通路修飾符,表示私有的。被private修飾的屬性和方法,在類的外部是不能通路的。

4.屬性是用來儲存資料的,一般是名詞;方法是用來表示行為的,一般是動詞。

5.方法前如果不寫通路修飾符,内容預設是公開的。

6.$this : 表示目前對象,隻有在類的方法中,當通路成員變量(屬性)或自己的方法時,才會用到$this。

構造和析構方法

1.構造方法的作用:初始化成員變量(屬性)。

構造方法不能主動調用,也就是你不能通過對象去通路構造方法,當我們執行個體化對象時,構造方法會自動執行。

在PHP中,同一個類中隻能聲明一個構造方法。

2.析構方法的作用:處理對象善後的工作。

析構方法是對象在銷毀之前最後一個被對象自動調用的方法。

析構函數不能帶參數。

對象的引用都是放在棧記憶體中的,由于棧的後進先出特點,最後建立的對象會被最先釋放,多以先自動調用最後一個對象的析構方法,最後才調用倒數第二個對象的析構方法。

資料庫連接配接

1.如果各個方法都要使用的,必須要把他設定為屬性;如果隻有一個方法使用,并且不想對外公開,可以把它設為局部的,設在方法裡。

2.通路對象中的屬性和方法,要使用符号->。通路屬性時,屬性名稱的$不用添加。

3.指派的參數稱為:帶預設值參數。一定要把帶預設值參數寫在其他參數的後面。

4.mysqli_connect_errno()函數:檢測連接配接是否成功,如果成功傳回0,如果失敗則會傳回錯誤碼。

mysqli_connect_error()函數:傳回上一次連接配接的錯誤描述。

mysqli_set_charset()函數:設定資料庫連接配接字元集。

5.require_once()函數:require_once 如果有多個同路徑的require_once,隻執行一次。

include()和require()相同點:語句包括并運作指定檔案。

include()和require()不同點:報錯時,include()會産生一個警告,但是腳本會繼續進行;require()會導緻一個緻命的錯誤,會使程式在這個地方終止。

實作資料的增删改查

1.增加:insert into  方法:add ,需要兩個參數。該方法主要實作:将調用者傳遞的資料,變成sql指令,最後執行sql指令,并傳回結果。

2.查詢:mysqli_query()函數傳回結果:針對成功的SELECT、SHOW、DESCRIBE等查詢會傳回一個mysqli_result對象,針對其他成功的查詢将會傳回TRUE,失敗傳回FALSE。

3.mysqli_fetch_assoc()從結果集中取一行作為關聯數組。

4.建構sql指令時,變量名加花括号是為了防止字元串串聯。

使用别的方法

1.在周遊$data時,我使用的方法是先判斷一下$v是不是字元串,之後再用join分割。

//添加資料
    function add($table, $data)
    {
        if (!is_array($data)) {
            die('第二參數必須是關聯數組');
        }
        $fields = $values = '';
        //周遊$data,建構出字段清單和值清單
        foreach ($data as $k => $v) {
            //判斷$v是不是字元串
            if (is_string($v)) {
                $v = "'$v'";
            }
            $newdata[$k] = $v;
        }
        //用逗号分割
            join(",", $k);
            join(",", $k);
        //建構sql指令
        $sql = "insert into {$table} ($k) values ($v)";

        //執行sql指令

        $ret = mysqli_query($this->conn, $sql);

        return $ret;
    }
           

2.老師用的是foreach()的方法來周遊數組,它可以周遊任何類型的數組,可以隻周遊值,也可以同時周遊鍵和值,比較友善;我用的是for循環來周遊數組。

function delete($table, $where = '1=1')
    {
        $condition = '';
        if (is_array($where)) {
            $k=array_keys($where);
            $v=array_value($where);
            for ($i=0;$i<count($where);$i++) {
                echo "{$k[$i]}='{$v[$i]}'";
            }
        } else {
            $condition = $where;
        }
        $sql = "delete from {$table} where {$condition}";
        $ret = mysqli_query($this->conn, $sql);
        echo "删除成功";
        return $ret;
    }