欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • 淺談js數(shù)組splice刪除某個(gè)元素爬坑

    淺談js數(shù)組splice刪除某個(gè)元素爬坑

    這篇文章主要介紹了淺談js數(shù)組splice刪除某個(gè)元素爬坑,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • JS+CSS實(shí)現(xiàn)的豎向簡(jiǎn)潔折疊菜單效果代碼

    JS+CSS實(shí)現(xiàn)的豎向簡(jiǎn)潔折疊菜單效果代碼

    這篇文章主要介紹了JS+CSS實(shí)現(xiàn)的豎向簡(jiǎn)潔折疊菜單效果代碼,涉及JavaScript鏈?zhǔn)讲僮髋c元素遍歷等相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • 微信小程序中轉(zhuǎn)義字符的處理方法

    微信小程序中轉(zhuǎn)義字符的處理方法

    這篇文章主要介紹了微信小程序中轉(zhuǎn)義字符的處理方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • JS實(shí)現(xiàn)針對(duì)給定時(shí)間的倒計(jì)時(shí)功能示例

    JS實(shí)現(xiàn)針對(duì)給定時(shí)間的倒計(jì)時(shí)功能示例

    這篇文章主要介紹了JS實(shí)現(xiàn)針對(duì)給定時(shí)間的倒計(jì)時(shí)功能,結(jié)合具體實(shí)例形式分析了javascript日期時(shí)間的正則判定與動(dòng)態(tài)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • 微信小程序?qū)崿F(xiàn)二維碼生成器

    微信小程序?qū)崿F(xiàn)二維碼生成器

    這篇文章主要為大家詳細(xì)介紹了如何通過微信小程序開發(fā)一個(gè)簡(jiǎn)單的二維碼生成器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以和小編一起學(xué)習(xí)一下
    2023-01-01
  • javascript 必知必會(huì)之closure

    javascript 必知必會(huì)之closure

    本系列博文主要談一些在 javascript 使用中經(jīng)常會(huì)混淆的高級(jí)應(yīng)用,包括: prototype, closure, scope, this關(guān)鍵字. 對(duì)于一個(gè)需要提高自己javascript水平的程序員,這些都是必須要掌握的.
    2009-09-09
  • JS實(shí)現(xiàn)html頁面點(diǎn)擊下載文件的兩種方式

    JS實(shí)現(xiàn)html頁面點(diǎn)擊下載文件的兩種方式

    這篇文章主要介紹了JS實(shí)現(xiàn)html頁面點(diǎn)擊下載文件的兩種方式,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • JS實(shí)現(xiàn)可展開折疊層的鼠標(biāo)拖曳效果

    JS實(shí)現(xiàn)可展開折疊層的鼠標(biāo)拖曳效果

    這篇文章主要介紹了JS實(shí)現(xiàn)可展開折疊層的鼠標(biāo)拖曳效果,具有展開折疊層及實(shí)時(shí)顯示鼠標(biāo)坐標(biāo)位置的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Javascript 判斷 object 的特定類轉(zhuǎn)載

    Javascript 判斷 object 的特定類轉(zhuǎn)載

    Javascript 判斷 object 的特定類轉(zhuǎn)載...
    2007-02-02
  • 采用call方式實(shí)現(xiàn)js繼承

    采用call方式實(shí)現(xiàn)js繼承

    這篇文章主要介紹了如何采用call方式實(shí)現(xiàn)js繼承,需要的朋友可以參考下
    2014-05-05

最新評(píng)論