PHP中物件導向程式設計之封裝以及魔術方法的使用

2021-08-03 15:48:40 字數 1488 閱讀 4238

<?php

/*物件導向程式設計之方法的封裝:

1.類中定義的方法如果加上private修飾詞封裝後就不能被外部物件直接訪問,但是可以被這個物件中未封裝的

其他成員屬性和方法使用;

2.一般類中有很多方法是為了類中某乙個特定的某個方法服務的並且也不希望外部物件直接訪問到,所以就需要

將那些不需要外部了解的方法加以封裝;

3.構造方法和析構方法不需要加以封裝,因為是公開的;

4.封裝後的方法不能通過外部直接訪問:類似手機功能只提供讓使用者互動的介面,其他的功能模組都是封裝好的;

5.魔術方法:__set()和__get()方法

__set()方法:當外部設定私有屬性值的時候自動呼叫;

__get()方法:當外部讀取私有屬性值的時候自動呼叫;

通過魔術方法控制私有屬性值的讀取和設定;

6.魔術方法:__isset()和__unset()方法

物件中受保護的和私有的屬性無法通過isset和unset來判斷是否存在和刪除屬性值,所以需要完成此功能需要在

類中提前宣告魔術方法來自動呼叫間接的控制從來達到和isset和unset同樣的功能(在物件外部使用isset()和unset()時

會自動呼叫這兩個對應的魔術方法)

*/class demo

function say(),年齡是,性別是.";}

function __get($pro)

function __set($name,$value)

}$this->$name=$value;

}function __isset($proname)

else

}function __unset($proname)

else}/*

function set***($***)

else}*/

function run()

private function left()

private function right()

private function go()

function __destruct()

}$obj=new demo("劉仁","18","男");

/*public修飾的成員屬性,可以在物件外部人為的改變和讀取屬性的值;

$obj->set***("女");

private修飾的成員屬性,不可以在物件外部改變或直接讀取屬性的值,但可以通過物件中其他方法間接讀取或設定控制

$obj->say();

echo $obj->name."

";echo $obj->age."

";echo $obj->***."

";$obj->name='許三多';

$obj->age=58;

$obj->***='保密';

$obj->say();

*/unset($obj->age);

if(isset($obj->age))

else

?>

PHP 物件導向程式設計之封裝性

設定私有成員 例項 我們已定義了乙個封裝,這個封裝是私有的成員屬性和私有的成員方法 class person 例項 class person 例項 person.class.php class person 受保護的成員方法,不能在類的外部直接訪問 protected function getage...

php物件導向程式設計之3大特性 封裝 繼承 多型

物件導向的三個基本特徵是 封裝 繼承 多型。封裝 封裝最好理解了。封裝是物件導向的特徵之一,是物件和類概念的主要特性。封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者物件操作,對不可信的進行資訊隱藏。繼承 物件導向程式設計 oop 語言的乙個主要功能就是 繼承 繼承...

物件導向程式設計之封裝 繼承和重寫

封裝的含義 對屬性進行操作 將資料 屬性 和行為 方法 包裝到類物件中。在方法內部對屬性進行操作,早類物件的外部呼叫方法。這樣,無須關心方法內部的具體實現細節,從而隔壁了複雜度。在類物件的內部通過訪問控制把某些屬性和方法隱藏起來,不允許在類物件的外部直接訪問,而是在類物件的內部對外提供公開的介面方法...