1.封裝:
具體概念講出來,感覺也不知道說的是什麼.其實就是
在類別的成員屬性和成員方法前面,加上類似public protected private 的修飾符
目的:盡量地隱藏物件的內(nèi)部細(xì)節(jié),達(dá)到存取控制.[不是拒絕存取]. (對外形成一個屏障,只保留有限的對外介面與外部發(fā)生聯(lián)繫.)
2.封裝的原則:
物件對外的部分不能夠隨意存取物件的內(nèi)部資料(成員屬性和成員方法),從而有效地避免了外部錯誤對它的"交叉感染",使軟體錯誤能夠局部化,大大減小查錯和排錯的難度.
3.修飾符public?protected private
public :公有的,預(yù)設(shè)的 ?protected ?:受保護的 private :私有的
4.訪問範(fàn)圍
是否可以存取對應(yīng)的屬性和方法
?
? | ? ? ? ?public | ? ? ? protected | ? ? ? private |
類的外部 | ? ? ? ? ? √ | ? ? ? ? ? ?× | ? ? ? ? ? ?× |
類的內(nèi)部 | ? ? ? ? ? √ | ? ? ? ? ? √ | ? ? ? ? ? √ |
?
?
?
?
?
①類的外部只有公有屬性和方法才可以訪問.
②其他屬性和方法可以在類別的內(nèi)部聲明公有方法間接地進行存取.
③在類別的內(nèi)部可以存取公有,私有,受保護的屬性和方法.
④在類別的內(nèi)部不可以存取私有和受保護的屬性和方法.
如果成員方法沒有任何存取控制符,預(yù)設(shè)是public的,在任何地方都可以存取.(在物件外部就可以公有方法作為存取介面,間接地存取物件的內(nèi)部細(xì)節(jié)).
5.關(guān)於封裝中的幾個常用魔術(shù)方法__set(),__get(),__isset(),__unset()
引出這幾個魔術(shù)方法,首先要說一下,構(gòu)造方法__construct()沒有加關(guān)鍵字修飾,是公有方法(構(gòu)造方法不要設(shè)定成私有的權(quán)限)用戶可以使用構(gòu)造方法在實例化物件後為私有屬性賦初始值.
但是,我們已經(jīng)實例化物件,在程式運作過程中想要對私有屬性進行賦值操作.有兩種方法
(1).在類別的內(nèi)部設(shè)定公有方法,專門來提供賦值,取值介面
?
class Person{ private $name="紫藤"; public function __construct(){ echo $this->name; } //賦值方法 public function setvalue($name){ $this->name=$name; } public function getvalue(){ echo $this->name; } } //實例化 $mod = new Person();
?
結(jié)果是: ?紫藤
$mod->setvalue('寶強'); $mod->getvalue();
結(jié)果是:寶強
(2)魔術(shù)方法__set(),__get(),__isset(),__unset()
如果像上面的每次都要去設(shè)定公有方法,很繁瑣.在php5.1.0之後的版本中,預(yù)定義了__set(),__get(),用來完成對所有非公有屬性都能取得和複製的操作.
__set($propertyName,$propertyValue)
有兩個參數(shù), 屬性名稱 ?和? 屬性值,在給非公有屬性賦值時,會自動調(diào)用此方法(就是說在類別中必須聲明__set()) ? () ?)
__get($propertyName)在取得非公有屬性的值時,會自動呼叫此方法.
?
檢測非公有屬性是否存在__isset(),刪除一個物件的非公有屬性__unset().為了防止使用者主動呼叫這兩個方法,要使用private關(guān)鍵字封裝在物件中.
__isset($propertyName)檢測非公有屬性是否存.(這是一個輔助檢測函數(shù),沒有檢測函數(shù)),還要在外部調(diào)用isset()函數(shù)時,才會自動調(diào)用此方法.
__unset($propertyName)刪除一個物件的非公有屬性_,要在外部呼叫unset()函數(shù)時,才會自動呼叫此方法.
?

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)
