国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP中__set()實例用法和基礎講解

2024-05-05 00:10:31
字體:
來源:轉載
供稿:網友

PHP中把以兩個下劃線__開頭的方法稱為魔術方法(Magic methods),這些方法在PHP中充當了舉足輕重的作用。
其中__set(),設置一個類的成員變量時調用

__set() 的作用:

__set( $property, $value )` 方法用來設置私有屬性, 給一個未定義的屬性賦值時,此方法會被觸發,傳遞的參數是被設置的屬性名和值。

請看下面的演示代碼:

<?phpclass Person{  private $name;  private $age;  public function __construct($name="", $age=25)  {    $this->name = $name;    $this->age = $age;  }  /**   * 聲明魔術方法需要兩個參數,真接為私有屬性賦值時自動調用,并可以屏蔽一些非法賦值   * @param $property   * @param $value   */  public function __set($property, $value) {    if ($property=="age")    {      if ($value > 150 || $value < 0) {        return;      }    }    $this->$property = $value;  }  /**   * 在類中聲明說話的方法,將所有的私有屬性說出   */  public function say(){    echo "我叫".$this->name.",今年".$this->age."歲了";  }}$Person=new Person("小明", 25); //注意,初始值將被下面所改變//自動調用了__set()函數,將屬性名name傳給第一個參數,將屬性值”李四”傳給第二個參數$Person->name = "小紅";   //賦值成功。如果沒有__set(),則出錯。//自動調用了__set()函數,將屬性名age傳給第一個參數,將屬性值26傳給第二個參數$Person->age = 16; //賦值成功$Person->age = 160; //160是一個非法值,賦值失效$Person->say(); //輸出:我叫小紅,今年16歲了

運行結果:

我叫小紅,今年16歲了

知識點擴展

PHP5中__get()、__set()方法

__get()方法:這個方法用來獲取私有成員屬性值的,有一個參數,參數傳入你要獲取的成員屬性的名稱,返回獲取的屬性值。如果成員屬性不封裝成私有的,對象本身就不會去自動調用這個方法。

__set()方法:這個方法用來為私有成員屬性設置值的,有兩個參數,第一個參數為你要為設置值的屬性名,第二個參數是要給屬性設置的值,沒有返回值。(key=>value)

/**person.class.php*/<?php class Person{   private $name;  public $age;  public $sex;  public $addrs;  public $time;   function __construct($name,$age,$sex,$addrs){    //parent::__construct();    $this->name = $name;    $this->age = $age;    $this->sex = $sex;    $this->addrs = $addrs;  }   private function __get($pri_name){    if(isset($this->$pri_name)){      echo "pri_name:".$this->$pri_name."<br>";      return $this->$pri_name;    }else{      echo "不存在".$pri_name;      return null;    }  }   private function __set($pri_name,$value){    echo $pri_name."的值為:".$value."<br>";    $this->$pri_name = $value;  }   function user($time){    $this->time = $time;    echo "我叫:".$this->name.",今年:".$this->age."歲,性別:".$this->sex.",地址是:".$this->addrs.",--".$this->time."<br>";  }   function __destruct(){    echo "再見:".$this->name."<br>";  } } ?>
/**person.php*/<?php  require "person.class.php";   $Person = new Person("xy404","22","男","湖北");  $Person->user(404);   $Person->name = "aib";  //在person.class.php中的person類中name這個屬性private的。所以它在賦值的時候自動調用了__set()這個方法.如果沒有__set()方法就會報錯。   echo $Person->name."<br>";?>

一般在調用類的屬性和方法的時候會使用:$this->name 或 $this->name()來完成。下面通過一個簡單的例子來說明一下$this->$name的這種用法。

<?phpclass Test{ public $name = "abc"; public $abc = "test"; public function Test(){    $name1 = "name";    echo $this->name;  // 輸出 abc    echo $this->$name1; // 輸出 abc,因為 $name1 的值是name,相當與這里替換成 echo $this->name;    $name2 = $this->$name1; // $name2 的值是 abc    echo $this->$name2; // 輸出 test,同上,相當與是 echo $this->abc; }}?>


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 砀山县| 厦门市| 新泰市| 临潭县| 漳平市| 密云县| 琼中| 嘉峪关市| 乐昌市| 山丹县| 咸宁市| 读书| 固阳县| 高邮市| 葵青区| 日土县| 林口县| 东海县| 涞源县| 米易县| 天长市| 台东市| 道孚县| 上栗县| 县级市| 观塘区| 承德市| 垣曲县| 巩留县| 河北省| 调兵山市| 雷州市| 株洲市| 东阿县| 将乐县| 华蓥市| 乌兰浩特市| 巴南区| 博白县| 玛多县| 新泰市|