php物件導向二

2021-09-26 20:50:11 字數 2688 閱讀 8627

靜態的成員包括(靜態屬性和靜態方法)

用static修飾的屬性和方法都是靜態的

訪問靜態成員,必須使用self關鍵字和:: 操作符

靜態變數屬於靜態儲存方式,其儲存空間為記憶體中的靜態資料區,該 區域中的資料在整個程式的執行期間一直占用這些儲存空間(在程式整個執行期間都不釋放),直到整個程式執行結束。

靜態成員在類內的訪問,可以使用self代替類名。

靜態成員在類的外部訪問時,必須使用類名和操作符::  ,而不需要建立物件。

單例模式,指乙個類只有乙個物件例項,無法建立第二個物件。

單例模式的設計規範:三私一公

私有的構造方法:禁止在類外無限例項化物件

私有的轉殖方法:禁止物件無限轉殖物件

私有的靜態屬性:儲存類內部例項化得到的物件

公有的靜態方法:允許外部通過呼叫類內部方法獲取物件

封裝單例模式的類時,需要注意:

只提供私有的建構函式,

含有乙個該類的靜態私有物件,

提供乙個靜態的公有的函式用於建立或獲取它本身的靜態私有物件。

有乙個private的clone方法,防止轉殖;

<?php

class db

//類入口,允許進入類內部

public static function getin()

//返回物件

return new self();

}//私有的轉殖方法

private function __clone()

}//例項化

//$s1 = new db;

//$s2 = new db;

//靜態方法進入到類內部

$s = db::getinfo();

$s1 = db::getinfo();

//轉殖物件

//$s2=clone $s;

//var_dump($s,$s1,$s2);

物件之間的賦值,實際就是引用賦值,兩個物件之間賦值後,就是乙個物件了。所以當乙個物件的內容發生變化後,另乙個物件的內容也會發生變化。

<?php

class student

$s1 = new student();

$s1->name = '張三';

//物件之間賦值

$s2 = $s1;

$s2->name = '李四';

echo $s1->name;

echo '

';echo $s2->name;

普通變數之間的賦值,如果也想使用引用賦值,必須使用&,如:

$name2 = &$name1

那麼,$name1和$name2也變成了同乙個變數,它們之間相互影響

轉殖後的物件,不會對原物件產生影響。

命名空間乙個最明確的目的就是解決重名問題

<?php

namespace model; //定義命名間

//類student在model命名空間中

class student

}

測試檔案

<?php

use model\student as stu; //引入 model命名空間的student 類,並重命名為stu

require_once 'student.php';

$stu = new stu();

$stu->say();

使用命名空間中的類,必須引入:use model\student,引入類時可重新命名,原有的類名不能再用。

php中把以兩個下劃線__開頭的方法稱為魔術方法(magic methods)

如:構造方法__construct,析構方法 __destruct;

魔術方法包括:

__construct(),類的建構函式

__destruct(),類的析構函式

__call(),在物件中呼叫乙個不可訪問方法時呼叫

__callstatic(),用靜態方式中呼叫乙個不可訪問方法時呼叫

__get(),獲得乙個類的成員變數時呼叫

__set(),設定乙個類的成員變數時呼叫

__isset(),當對不可訪問屬性呼叫isset()或empty()時呼叫

__unset(),當對不可訪問屬性呼叫unset()時被呼叫。

__sleep(),執行serialize()時,先會呼叫這個函式

__wakeup(),執行unserialize()時,先會呼叫這個函式

__tostring(),類被當成字串時的回應方法

__invoke(),呼叫函式的方式呼叫乙個物件時的回應方法

__set_state(),呼叫var_export()匯出類時,此靜態方法會被呼叫。

__clone(),當物件複製完成時呼叫

__autoload(),嘗試載入未定義的類

__debuginfo(),列印所需除錯資訊

__autoload(),這是乙個自動載入函式,用於例項化乙個未定義的類。

若沒有包含student類檔案,當使用student類時,會自動執行__autoload函式;

_autoload函式 :主要的功能就是構造需要載入的類檔案的路徑,然後包括包含類檔案。這一切都是當程式找不到類檔案時自動執行的。

spl_autoload_register() 提供了一種更加靈活的方式來實現類的自動載入。

php物件導向(二)

轉殖物件 php的物件是引用型別,變數名往往指代的是乙個指標,這點與js很相似,直接將 spot物件賦值給 al物件,這倆個物件指向的記憶體中的同乙個物件,所以改變乙個另外乙個也會受到影響,但是php4中卻不是這樣的。class dog sopt new dog haha al sopt al na...

PHP物件導向(二)

怎麼樣使用物件中的成員 php物件中的成員有兩種一種是成員屬性,一種是成員方法。物件中的成員就要使用乙個特殊的操作符 來完成物件成員的訪問 例如 物件 屬性 p1 name p2 age p3 物件 方法 p1 say p2 run 注釋 從上例中可以看出只要是物件裡面的成員就要使用物件 屬性 物件...

PHP物件導向(二)

parent 關鍵字 用在子類中 訪問父類的方法或屬性 用法 parent 屬性或方法或父類名字 屬性或方法 多次呼叫 只能例項化同乙個物件 不會重複 所謂的靜態 就是只屬於這個類的屬性和方法 類中的屬性名和方法名 用static 寫法 static 屬性名 static function 使用 類...