PHP面向?qū)ο缶幊讨械腳_set和__get方法
在PHP面向?qū)ο缶幊讨校覀兘?jīng)常會遇到需要訪問protected和private修飾的屬性的情況。為了方便操作這些屬性,PHP提供了兩個特殊的魔術(shù)方法__set和__get。通過這兩個魔術(shù)方法,我們可
在PHP面向?qū)ο缶幊讨校覀兘?jīng)常會遇到需要訪問protected和private修飾的屬性的情況。為了方便操作這些屬性,PHP提供了兩個特殊的魔術(shù)方法__set和__get。通過這兩個魔術(shù)方法,我們可以實(shí)現(xiàn)對私有屬性的賦值和獲取。接下來我們將介紹如何編寫代碼來使用這兩個魔術(shù)方法。
編寫包含私有屬性的類
首先,我們需要編寫一個包含私有屬性的類。以下是一個示例代碼:
```php
class A {
private $n1;
private $n2;
}
```
在上面的代碼中,我們定義了一個名為A的類,并聲明了兩個private屬性$n1和$n2。
使用__set()和__get()方法
接下來,我們需要在類中實(shí)現(xiàn)__set()和__get()方法來成對使用,以實(shí)現(xiàn)對私有屬性的賦值和獲取。下面是相應(yīng)的代碼片段:
```php
public function __set($pro_name, $pro_val){
$this->$pro_name $pro_val;
}
public function __get($pro_val){
if(isset($pro_val)){
return $this->$pro_name;
} else {
return null;
}
}
```
在上面的代碼中,__set()方法用于設(shè)置私有屬性的值,而__get()方法用于獲取私有屬性的值。在__get()方法中,我們還進(jìn)行了對屬性是否存在的判斷。
創(chuàng)建對象并訪問私有屬性
現(xiàn)在,我們可以創(chuàng)建一個對象并嘗試訪問私有屬性。例如,我們可以創(chuàng)建一個對象$aq,并嘗試訪問它的$n1屬性。以下是相應(yīng)的代碼:
```php
$aq new A();
$aq->n1 39;
echo $a1->n1;
```
通過上面的代碼,我們成功地對私有屬性$n1進(jìn)行了賦值并獲取,并且可以正常地輸出$n1的值。
通過使用__set和__get這兩個魔術(shù)方法,我們可以更靈活地操作私有屬性,提高代碼的可讀性和可維護(hù)性。在實(shí)際項(xiàng)目開發(fā)中,合理地運(yùn)用這兩個方法將會給我們帶來很多便利。