首頁 >後端開發 >php教程 >魔術方法__set()實例詳解(php物件導向教學課程)

魔術方法__set()實例詳解(php物件導向教學課程)

巴扎黑
巴扎黑原創
2017-04-18 18:15:322648瀏覽

__set()的作用:

__set():在給不可存取屬性賦值(private,protected,不存在)時,php就會執行__set()方法。

上面我們說了__set()的作用是:在給不可存取屬性賦值(private,protected,不存在)時,php就會執行__set()方法。

這個是什麼意思呢。比如說,我們還是以上面的實例為例。我們把猴子喜歡吃的桃子換成香蕉,但是根據規則來說,$food前面的關鍵字是protected
,不能直接訪問,但是我們又需要對$food賦值,我們該怎麼辦呢?

<?php
class Monkey{
public $name;
protected $food;
function __construct($name,$food){
$this->name = $name;
$this->food = $food;
}
function sayHello(){
echo &#39;<br/>我是&#39; . $this->name . &#39;我喜欢吃&#39; . $this->food;
}
//魔术方法
function __get($pro_name){
//先判断$pro_name是否存在
if(isset($this -> $pro_name)){
return $this -> $pro_name;
}else{
echo &#39;属性值不存在&#39;;
}
}
function __set($pro_name,$value){
//先判断$pro_name是否存在
if(isset($this -> $pro_name)){
return $this -> $pro_name = $value;
}else{
echo &#39;属性值不存在&#39;;
}
$monkey = new Monkey(&#39;猴子&#39; , &#39;桃子&#39;)
$monkey -> sayHello();
echo &#39;猴子喜欢吃&#39; . $monkey -> food;
$monkey -> food = &#39;香蕉&#39;;
echo &#39;<br/>&#39;;
$monkey -> sayHello();

因為我們的$food是保護的,所以不允許存取。那麼,我們就要藉助__set()魔術方法來實現。 __set()方法包含兩個參數,分別表示變數名稱和變數值,兩個參數不可省略。

以上是魔術方法__set()實例詳解(php物件導向教學課程)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn