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

首頁 > 開發(fā) > PHP > 正文

PHP使用方法重載實現(xiàn)動態(tài)創(chuàng)建屬性的get和set方法

2024-05-04 23:27:31
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP使用方法重載實現(xiàn)動態(tài)創(chuàng)建屬性的get和set方法,使用本文方法可以在一個類中不用在寫大量的set方法或get方法,需要的朋友可以參考下
 
 

在PHP中,我們不能夠直接通過方法名相同,簽名不同的方法來實現(xiàn)方法重載,因為PHP是弱數(shù)據(jù)類型,不能很好的區(qū)分簽名。但是,可以在PHP的類中運用__call()方法來實現(xiàn)方法重載。當調用一個類中并不存在的方法時,會自動調用__call()方法,其形式為__call($name,$arguments) 其中$name是方法的名稱,$arguments是一個數(shù)組類型的參數(shù)。

下面的例子是使用PHP的方法重載來動態(tài)創(chuàng)建get和set方法。(在面向對象編程中,一個類中的屬性會使用get和set來賦值,但是如果一個類中有太多的屬性,比如30個,那么如果不用方法重載的話,我們就需要寫30個set方法,30個get方法,自已一邊慢慢寫去吧。。。)

 

復制代碼代碼如下:

<?php
class person
{
 private $name;
 private $age;
 private $address;
 private $school;
 private $phonenum;
 public function __call($method,$args)
 {
  $perfix=strtolower(substr($method,0,3));
  $property=strtolower(substr($method,3));
  if(empty($perfix)||empty($property))
  {
   return;
  }
  if($perfix=="get"&&isset($this->$property))
  {
   return $this->$property;
  }
  if($perfix=="set")
  {
   $this->$property=$args[0];
  }
 }
}
$p=new person();
$p->setname('lvcy');
$p->setage(23);
$p->setAddress(chengdu);
$p->setschool('uestc');
$p->setphonenum('123456');
echo $p->getname().'//n';
echo $p->getage().'//n';
echo $p->getaddress().'//n';
echo $p->getschool().'//n';
?>

 

通過__Call()方法很容易的解決了這個問題,而不是編寫每個屬性的get set方法。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 安宁市| 青岛市| 福安市| 武城县| 县级市| 社旗县| 大城县| 扎兰屯市| 阳原县| 繁峙县| 石门县| 康平县| 孝义市| 溧阳市| 长春市| 石楼县| 乐昌市| 顺平县| 申扎县| 建阳市| 景宁| 巴东县| 外汇| 河源市| 普安县| 乌兰浩特市| 临西县| 红原县| 东城区| 哈尔滨市| 巫山县| 惠来县| 星座| 淳安县| 新宾| 罗定市| 湘乡市| 于田县| 陈巴尔虎旗| 井研县| 竹北市|