最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年11月17日 11:26:21   投稿:junjie  
這篇文章主要介紹了PHP使用方法重載實(shí)現(xiàn)動(dòng)態(tài)創(chuàng)建屬性的get和set方法,使用本文方法可以在一個(gè)類中不用在寫大量的set方法或get方法,需要的朋友可以參考下

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

下面的例子是使用PHP的方法重載來動(dòng)態(tài)創(chuàng)建get和set方法。(在面向?qū)ο缶幊讨?,一個(gè)類中的屬性會(huì)使用get和set來賦值,但是如果一個(gè)類中有太多的屬性,比如30個(gè),那么如果不用方法重載的話,我們就需要寫30個(gè)set方法,30個(gè)get方法,自已一邊慢慢寫去吧。。。)

復(fù)制代碼 代碼如下:

<?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()方法很容易的解決了這個(gè)問題,而不是編寫每個(gè)屬性的get set方法。

相關(guān)文章

最新評(píng)論

定兴县| 泸溪县| 隆回县| 东丰县| 策勒县| 华坪县| 汾阳市| 临邑县| 满洲里市| 抚松县| 日土县| 泗水县| 民丰县| 二手房| 彭泽县| 孝昌县| 汨罗市| 始兴县| 阳春市| 宣威市| 北流市| 金川县| 延边| 泾源县| 宁城县| 东乡| 五家渠市| 汽车| 海原县| 大足县| 全椒县| 盐亭县| 穆棱市| 洱源县| 衡山县| 涿州市| 安丘市| 融水| 岳阳市| 隆化县| 平湖市|