php物件導向 get , set 的用法

2021-06-18 16:39:59 字數 2808 閱讀 4681

php物件導向_get(),_set()的用法

一般來說,總是把類的屬性定義為

private

,這更符合現實的邏輯。但是,

對屬性的讀取和賦值操作是非常頻繁的,因此在

php5

中,預定義了兩個函式「

__get()

」和「__set()

」來獲取和賦值其屬性

,以及檢查屬性的「

__isset()

」和刪除屬性的方法「

__unset()

」。上一節中,我們為每個屬性做了設定和獲取的方法,在

php5

中給我們提供了專門為屬性設定值和獲取值的方法,「

__set()

」和「__get()

」這兩個方法,這兩個方法不是預設存在的,

而是我們手工新增到類裡面去的,像構造方法

(__construct())一樣,

類裡面新增了才會存在,可以按下面的方式來新增這兩個方法,當然也可以按個人的風格來新增:

//__get()

方法用來獲取私有屬性

private function

__get(

$property_name)

else

} //__set()

方法用來設定私有屬性

private function

__set(

$property_name,$

value)

__get()

方法:這個方法用來獲取私有成員屬性值的

,有乙個引數,

引數傳入你要獲取的成員屬性的名稱,返回獲取的屬性值,

這個方法不用我們手工的去呼叫,因為我們也可以把這個方法做成私有的方法,

是在直接獲取私有屬性的時候物件自動呼叫的。因為私有屬性已經被封裝上了,是不能直接獲取值的(比如:「

echo $p1->name

」這樣直接獲取是錯誤的),但是如果你在類裡面加上了這個方法,在使用「

echo $p1->name

」這樣的語句直接獲取值的時候就會自動呼叫

__get($property_name)

方法,將屬性

name

傳給引數

$property_name

,通過這個方法的內部執行,返回我們傳入的私有屬性的值。如果成員屬性不封裝成私有的,物件本身就不會去自動呼叫這個方法。

__set()

方法:這個方法用來為私有成員屬性設定值的,有兩個引數,第乙個引數為你要為設定值的屬性名,第二個引數是要給屬性設定的值,沒有返回值。這個方法同樣不用我們手工去呼叫,它也可以做成私有的,是在直接設定私有屬性值的時候自動呼叫的,同樣屬性私有的已經被封裝上 了,

如果沒有

__set()

這個方法,是不允許的,

比如:$this->name=

『zhangsan』,

這樣會出錯,但是如果你在類裡面加上了

__set($property_name, $value)

這個方法,在直接給私有屬性賦值的時候,就會自動呼叫它,把屬性比如

name

傳給$property_name,

把要賦的值「

zhangsan

」傳給$value

,通過這個方法的執行,達到賦值的目的。如果成員屬性不封裝成私有的,物件本身就不會去自動呼叫這個方法。為了不傳入非法的值,

還可以在這個方法給做一下判斷。**如下:

<?php

class

person

else

} //__set()

方法用來設定私有屬性

private function

__set(

$property_name,$

value)

} $p1=

newperson(); //

直接為私有屬性賦值的操作,會自動呼叫

__set()

方法進行賦值 $

p1->name="張三

"; $

p1->***="男

"; $

p1->age=20;

//直接獲取私有屬性的值,會自動呼叫

__get()

方法,返回成員屬性的值

echo

"姓名:".

$p1->name.""

; echo

"性別:".

$p1->***.""

; echo

"年齡:".

$p1->age.""

; ?>

程式執行結果:

在直接設定私有屬性值的時候,自動呼叫了這個

__set()

方法為私有屬性賦值

在直接設定私有屬性值的時候,自動呼叫了這個

__set()

方法為私有屬性賦值

在直接設定私有屬性值的時候,自動呼叫了這個

__set()

方法為私有屬性賦值

在直接獲取私有屬性值的時候,自動呼叫了這個

__get()

方法姓名:張三

在直接獲取私有屬性值的時候,自動呼叫了這個

__get()

方法性別:男

在直接獲取私有屬性值的時候,自動呼叫了這個

__get()

方法年齡:20

以上**如果不加上

__get()

和__set()

方法,程式就會出錯,因為不能在類的外部操作私有成員,而上面的**是通過自動呼叫

__get()

和__set()

方法來幫助我們直接訪問封裝的私有成員的。

php物件導向 get , set 的用法

一般來說,總是把類的屬性定義為 private 這更符合現實的邏輯。但是,對屬性的讀取和賦值操作是非常頻繁的,因此在 php5 中,預定義了兩個函式 get 和 set 來獲取和賦值其屬性 以及檢查屬性的 isset 和刪除屬性的方法 unset 上一節中,我們為每個屬性做了設定和獲取的方法,在 p...

php物件導向 get , set 的用法

php物件導向 get set 的用法 一般來說,總是把類的屬性定義為 private 這更符合現實的邏輯。但是,對屬性的讀取和賦值操作是非常頻繁的,因此在 php5 中,預定義了兩個函式 get 和 set 來獲取和賦值其屬性 以及檢查屬性的 isset 和刪除屬性的方法 unset 上一節中,我...

php物件導向 get , set 的用法

php物件導向 get set 的用法 一般來說,總是把類的屬性定義為private,這更符合現實的邏輯。但是,對屬性的讀取和賦值操作是非常頻繁的,因此在php5中,預定義了兩個函式 get 和 set 來獲取和賦值其屬性,以及檢查屬性的 isset 和刪除屬性的方法 unset 上一節中,我們為每...