php學習之旅第七天

2021-10-03 10:49:16 字數 3671 閱讀 8068

概念:使用static關鍵字修飾的類成員,表示該成員屬於類訪問

靜態成員:

靜態屬性

靜態方法

靜態成員是明確用來給類訪問的,而不是物件

靜態成員只是多了static關鍵字修飾,本身也可以被物件訪問

靜態成員同樣使用訪問修飾限定符限定,效果一致

class

saler

echo saler:

:$pi

;

靜態方法同上

物件可以直接訪問靜態方法,但是不能直接訪問靜態屬性,需要借助範圍解析操作符::

雖然可以但是禁止以上操作

因為類只允許訪問靜態成員和類常量

注:靜態方法本質是給類訪問,所以不允許在靜態方法內部 使用$this作用:在類的內部(方法裡面)使用,代替類名的寫法

可以保障使用者方便修改類名

用法:self關鍵字是代替類名,所以需要配合範圍解析操作符::可以用在類的內部例項化物件

1. 手動載入

基本語法

#類檔案:saler.php

<?php

class

saler

?>

應用檔案:usesaler.php

#使用saler類需要先包含saler類所在的檔案

include_once

'saler.php'

;#通常使用include_once,因為類不允許重名$s=

newsaler()

;

但是直接載入比較消耗資源,且如果類已經在記憶體已經存在,直接載入會報錯,所以可以執行一次判定:

if(!

class_exists

('saler'))

$s=newsaler()

;

2. 自動載入

基本語法:

主要利用__autoload函式,當系統需要使用乙個類,而記憶體中不存在的時候,系統就會自動呼叫__autoload()函式來載入類檔案

# 定義實現自動載入

function

__autoload

($classname

)#c資料夾沒有對應的檔案

$m_file

='m/'

.$classname

.'.php';if

(file_exists

($m_file))

}

注:自動載入是指按照開發者規定的路徑去尋找對應的檔案,並實現包含。如果檔案不存在,那麼系統會在使用類的時候報錯,因為這是開發者自己犯的錯,系統不能規避

在php7以上後不建議使用__autoload

3.spl註冊自動載入

本質與__autoload一樣,但是是採用一種註冊機制,將使用者自定義的函式,放到系統內部,使用spl autoload register(定義好的函式)

上述autoload函式永遠不會自動執行,除非將函式註冊到系統內部

spl_autoload_register

('函式名'

)

sql可以註冊多個自定義的載入函式,更方便管理

定義:通過已有的物件複製乙個新的同樣的物件,但是二者之間並非同乙個物件

基本語法:

class

saler

$s1=

newsaler()

;$s1

->

count=1

;$s2

= clone $s1

;

注:物件在例項化的時候會自動呼叫存在的__construct方法,同樣,php中在類的內部允許定義乙個新的__clone()的方法,在物件被轉殖後,新轉殖出來的物件會自動呼叫

轉殖方法同樣可以私有化

1.構造方法

資料庫的操作最基本的特性不會變:即需要連線認證,而連線認證的資訊是靈活的,所以可以通過設定屬性來控制,而這些資訊根據不同使用者,也是不同的,應該可以改變,所以可以通過構造方法來實現資料傳入

<?php

#資料庫操作類

class

sql}

測試:

#接上述**(類外測試)

$s1=

newsql()

;#使用資料庫預設資訊

$db=

array

('host'

=>

'192.168.0.1'

,'user'

=>

'admin'

,'pass'

=>

'admin'

,'dbname'

=>

'taobao');

$s2=

newsql

($db);

#使用外部資料庫資訊

var_dump

($s2

);

2.連線認證

函式:iconv('字符集1','字符集2','所轉資訊');

#連線認證

public

$link

;public

$errno

;public

$error

;public

function

connect()

#正確返回

return

true

;}

3.設定字符集
#字符集設定

public

function

charset()

#正確操作

return

true

;}

4.sql執行檢查
#sql執行以及錯誤檢查

public

function

check

($sql

)#成功返回結果

return

true

;}

5.寫操作
#寫操作

public

function

write

($sql

)#獲取自增長id方法

public

function

insert_id()

6.讀操作

讀取一條記錄(利用check進行sql執行和錯誤檢查):讀取一條資料可能需要獲取當前查詢結果的列數,增加屬性保留

#讀取資料:一條記錄

public

$columes=0

;public

function

read_one

($sql

)#沒有結果

return

false;}

#讀取資料:多條記錄

public

$rows=0

;public

function

read_all

($sql

)#返回結果

return

$list

;}

第七天學習

練習題 1 以下類定義中哪些是類屬性,哪些是例項屬性?class c num 0 def init self self.x 4 self.y 5 c.count 62 怎麼定義私有 法?3 嘗試執行以下 並解釋錯誤原因 4 按照以下要求定義乙個遊樂園門票的類,並嘗試計算2個 1個小孩平日票價。要求 ...

Java學習第七天

類成員 static成員 當使用例項來訪問類成員時,系統底層依然是委託該類來訪問類成員。因此,即便該類例項為null,她依然可以訪問所屬類的類成員。例如 package lesson5 單例模式 singleton 主要通過靜態變數 靜態方法和private構造方法完成。例如 package les...

C 學習第七天

c 中的params引數 引數陣列 1 params引數是陣列。呼叫方式可以陣列方式,也可以單個元素方式。static void test string name,params int scores console.writeline 你好,你的scores is name,sb test 劉德華 ...