php面向对象笔记
1.程序都是要解決真實的業務邏輯!而且現實的業務邏輯,都是動作的主體在發出動作,而不是動作獨立出現的!
2.語法
3
.
4訪問屬性:?$object->stu_name;
訪問方法:對象->方法名();
?
在方法中,訪問對象,$this
?
$this,這個,這個對象。調用該方法的對象!
?
$this 就是一個方法內的局部變量!特殊在,方法被對象調用執行時,php會自動確定是哪個對象調用的該方法,會使用該對象為方法內的$this賦值
5.
?
構造方法,__construct()
?
在實例化類得到對象時被自動地調用!
?
主要承擔的工作是初始化對象屬性!
如果沒有定義__construct()可以不用執行!
但是一旦定義了構造方法,那么構造(實例化)的過程,一定要包括這個調用構造方法的過程(構造方法一定會執行)。
?
TIP:有時也稱,實例化對象為構造對象!
構造方法可以自動被調用!
注意
1,?構造方法可以是一個別的名字
一個與類名相同的方法,也可能是構造方法!
1,?在new class_name時:
new Student
new Student();
取決于是否存在構造函數的必要參數!
6.
析構方法,__destruct
與構造方法相對,表示在對象被銷毀時,自動調用的方法!
對象被銷毀,但是對象所占用的資源不一定完全被銷毀!
?
在對象被銷毀時調用,作用是,用于釋放對象所占用的額外資源!而不是對象本身!
注意:
1對象在什么時候被銷毀?
在用戶腳本結束后,所有的資源包括對象都被銷毀!
?
2保存對象的變量被提前unset!
?
1,?保存對象的變量,被賦予了一個新的值!
7
如果一個方法或者函數參數過多,或者參數不能確定時:會選擇使用數組的形式完成處理:
在構造方法內,先完成對屬性的初始化!
升級:對參數選項增加一個默認值的概念,類似于端口,編碼,可以在常規情況下實例化時省略!
在構造方法內,對屬性初始化時,對默認值做處理:
8
類的靜態成員,static
靜態成員,指的是邏輯上被所有的對象所共享,屬于類的成員稱之為類的靜態成員!
分成靜態屬性和靜態方法
保存數據的是靜態屬性,執行功能的靜態方法!
9
聲明
額外增加一個 static 關鍵字!
屬性:
方法:
10.
訪問
->訪問對象成員,靜態為類的成員
?
因此,應該使用類訪問,
類 :: 成員!
::,靜態訪問符,類訪問符(范圍解析操作符)
?
?
在訪問PHP類中的成員變量或方法時,如果被引用的變量或者方法被聲明成const(定義常量)或者static(聲明靜態),那么就必須使用操作符::,反之如果被引用的變量或者方法沒有被聲明成const或者static,那么就必須使用操作符->。
?
另外,如果從類的內部訪問const或者static變量或者方法,那么就必須使用自引用的self,反之如果從類的內部訪問不為const或者static變量或者方法,那么就必須使用自引用的$this。
?11.
類似于$this,同樣存在一個self關鍵字(注意沒有$),在類中,代表當前類!
$this:這個對象, $this->
self:類自己,self::
?
12.
注意
1,?訪問上,靜態成員只能使用::靜態訪問符號訪問!
典型的,::前應該是類,類內可以使用self。
但是,php支持: 對象::靜態成員!
?
盡量不要這么寫!
?
1,?訪問上,靜態成員使用類訪問,而非靜態成員使用對象訪問。
但是,問題出現在 方法上!
測試1,使用類訪問,靜態與非靜態方法:
?
測試2,適用對象訪問:
?
結論:‘無論是靜態方法,還是非靜態方法,都可以使用類或者對象來訪問。那么靜態方法與非靜態方法的意義在于哪里?
現象的原因:方法是可執行性代碼的集合,針對多個對象都是一致的!
區別在哪?
在于$this的使用上!
只有在使用對象調用非靜態方法時,才可以使用$this!
靜態靜態方法,無論如何也不能對$this做處理
而非靜態方法,只有確定了對象,才能確定$this的值!
11,
類常量,const
?
在類內定義,屬于類的常量!
?
定義
?
使用關鍵字 const聲明!
而且,沒有訪問修飾限定符。
12,
訪問
使用類訪問,與訪問靜態成員類似:
類::常量名.
?
總結
類中,一共只有5種語法:
屬性,方法,靜態屬性,靜態方法,類常量
?
轉載于:https://www.cnblogs.com/zhaoshunjie/p/5814545.html
總結
- 上一篇: 兰州交通大学开除患癌教师符合理性
- 下一篇: php ob静态缓存