概念:使用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 劉德華 ...