PHP面向物件
面向物件
面向物件內容:面向物件。面向過程。
類−定義了一件事物的抽象特點。
物件− 是類的例項。
成員變數− 定義在類內部的變數。該變數的值對外是不可見的,但是可以通過成員函式訪問,在類被例項化為物件後,該變數即可稱為物件的屬性。
成員函式− 定義在類的內部,可用於訪問物件的資料。
類的定義:
類使用class關鍵字後加上類名定義
類名後的一對大括號({})內可以定義變數和方法。
類的變數使用var來宣告, 變數也可以初始化值。
函式定義類似 PHP 函式的定義,但函式只能通過該類及其例項化的物件訪問。
建立物件:
使用時:
$bmw = new phpClass();
呼叫成員變數和方法
$bmw->myfunc();$bmw->var1;
名稱空間中類的定義和使用:
如圖-------------->
建構函式:
主要用來在建立物件時初始化物件, 即為物件成員變數賦初始值,在建立物件的語句中與 new 運算子一起使用。
function __construct(){}
解構函式:
物件結束其生命週期時(例如物件所在的函式已呼叫完畢),系統自動執行解構函式。
function __destruct(){}
繼承:extends
一個父類可以被多個子類繼承,
一個子類只能繼承一個父類;
方法重寫:
如果從父類繼承的方法不能滿足子類的需求,可以對其進行改寫,這個過程叫方法的覆蓋
訪問控制:
public(公有):公有的類成員可以在任何地方被訪問。
protected(受保護):受保護的類成員則可以被其自身以及其子類訪問。
private(私有):私有的類成員則只能被其定義所在的類訪問。
屬性的訪問控制:
類屬性必須定義為公有,受保護,私有之一。如果用 var 定義,則被視為公有。
方法的訪問控制:
類中的方法可以被定義為公有,私有或受保護。如果沒有設定這些關鍵字,則該方法預設為公有。
在子類中呼叫父類的屬性和方法時:使用$this呼叫;不可在定義屬性時使用$this;
在靜態方法中不允許使用$this,只能使用self,較為靠譜的回答說明是$this是例項化物件
parent::呼叫靜態屬性和方法;
常量:
可以把在類中始終保持不變的值定義為常量。在定義和使用常量的時候不需要使用 $ 符號。
class MyClass{
const constant = '常量值';
function showConstant() {
echo self::constant;//self指的類的本身
}}
echo MyClass::constant;//在類外時使用類的名字
class aabb extends MyClass {
funcation smker(){
echo parents::constant;//用父類的常量時用parents
}
}
static 關鍵字:
宣告類屬性或方法為 static(靜態),就可以不例項化類而直接訪問。
例如
class a{
public static $q = 110;
funcation aa(){
each self::$q;
}
echo a::$q;
}
class b extends a{
funcation ss(){
each parents::$q;
}