亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > PHP面向?qū)ο蟪绦蛟O(shè)計之構(gòu)造方法和析構(gòu)方法詳解

PHP面向?qū)ο蟪绦蛟O(shè)計之構(gòu)造方法和析構(gòu)方法詳解

熱門標(biāo)簽:電銷機器人問門薩維品牌my 廣東廣州在怎么申請400電話 開發(fā)地圖標(biāo)注類網(wǎng)站 余姚電話機器人 外呼系統(tǒng)能給企業(yè)帶來哪些好處 400電話蘭州申請請 百度地圖怎樣標(biāo)注圖標(biāo) 咸寧銷售電銷機器人系統(tǒng) 百度地圖標(biāo)注偏差

本文實例講述了PHP面向?qū)ο蟪绦蛟O(shè)計之構(gòu)造方法和析構(gòu)方法。分享給大家供大家參考,具體如下:

構(gòu)造方法和析構(gòu)方法是對象中的兩個特殊方法,它們都與對象的生命周期有關(guān)。構(gòu)造方法是對象創(chuàng)建完成后第一個被對象自動調(diào)用的方法,這是我們在對象中使用構(gòu)造方法的原因。而析構(gòu)方法是對象在銷毀之前最后一個被對象自動調(diào)用的方法,這也是我們在對象中使用析構(gòu)方法的原因。所以通常使用構(gòu)造方法完成一些對象的初始化工作,使用析構(gòu)方法完成一些對象在銷毀之前的清理工作

1.構(gòu)造方法

在每個聲明的類中都有一個唄稱為構(gòu)造方法的特殊成員方法,如果沒有顯式的聲明它,類中都會默認(rèn)存在一個沒有參數(shù)列表并且內(nèi)容為空的構(gòu)造方法。如果顯式的聲明它,則類中的默認(rèn)構(gòu)造方法將不會存在。當(dāng)創(chuàng)建一個對象時,構(gòu)造方法就會被自動調(diào)用一次,即每次使用關(guān)鍵詞new來實例化對象時都會自動調(diào)用構(gòu)造方法,不能主動通過對象的引用調(diào)用構(gòu)造方法。所以通常使用構(gòu)造方法來執(zhí)行一些有用的初始化任務(wù),比如對成員屬性在創(chuàng)建對象時賦初值等。

在PHP5以前的版本中,構(gòu)造方法的方法名稱必須與類名相同,這種方式在PHP 5中任然可以使用。但在PHP中很少聲明和類名同名的構(gòu)造方法了,這樣做的好處是可以使構(gòu)造函數(shù)獨立于類名,當(dāng)類名發(fā)生變化時不需要更改相應(yīng)的構(gòu)造函數(shù)名稱。為了向下兼容,在創(chuàng)建對象時,如果一個類中沒有名為__construct()的構(gòu)造方法,PHP將搜索與類名相同名的構(gòu)造方法執(zhí)行。在類中聲明構(gòu)造方法的格式如下:

function __construct( [參數(shù)列表] ){ //構(gòu)造方法名稱是以兩個下劃線開始的
  //方法體,通常用來對成員屬性進(jìn)行初始化賦值
}

在PHP中,同一個類中只能聲明一個構(gòu)造方法。原因是構(gòu)造方法名稱是固定的,在PHP中不能聲明同名的兩個函數(shù),所以也就沒有構(gòu)造方法重載。但可以在聲明構(gòu)造方法時使用默認(rèn)參數(shù),實現(xiàn)其他面向?qū)ο蟮木幊陶Z言中構(gòu)造方法重載的功能。這樣在創(chuàng)建對象時,如果在構(gòu)造方法中沒有傳入?yún)?shù),則使用默認(rèn)參數(shù)為成員屬性進(jìn)行初始化。

  • 構(gòu)造函數(shù)可以接受參數(shù),能夠在創(chuàng)建對象時賦值給對象屬性
  • 構(gòu)造函數(shù)可以調(diào)用類方法或其他函數(shù)
  • 構(gòu)造函數(shù)可以調(diào)用其他類的構(gòu)造函數(shù)

構(gòu)造函數(shù)使用例子:

?php
class Person{
  private $name;
  private $age;
  private $gender;
  public function __construct($name,$age,$gender){
    $this->setName($name);  //調(diào)用類方法
    $this->age = $age;
    $this->setGender($gender);
  }
  public function setName($name){
    $this->name = $name;
  }
  // ... setter 方法
}
$person = new Person("yeoman",23,'男');
?>

調(diào)用父類構(gòu)造函數(shù)、調(diào)用無關(guān)類的構(gòu)造函數(shù):

function __construct(){
  parent::__construct(); // 調(diào)用父類的構(gòu)造函數(shù)必須顯示的使用parent調(diào)用父類構(gòu)造函數(shù)
  classname::__construct(); // 調(diào)用其他類的構(gòu)造函數(shù),classname是類名
  //其他操作
}

繼承和構(gòu)造函數(shù)

PHP中的子類的構(gòu)造函數(shù)不會主動調(diào)用父類的構(gòu)造函數(shù),要顯示的使用parent::__construct()調(diào)用:

?php
class Animal{
  private $name;
  function __construct($name){
    $this->setName($name)
    echo "動物類被創(chuàng)建!";
  }
  // ... 其他方法
}
class Birds extends Animal{
  private $name;
  private $leg;
  function __construct($name,$leg){
    parent::__construct($name); // 顯示調(diào)用
    $this->setLeg($leg);
    echo "鳥類被創(chuàng)建!";
  }
  // ... 其他方法
}
?>

如果涉及多層繼承,當(dāng)調(diào)用parent::__construct()時,會沿著父類向上搜索,直到找到最合適的構(gòu)造函數(shù),例如:

// 接上例
class Parrot extends Birds{
  private $name;
  private $leg;
  private $wing;
  function __construct($name){
    parent::__construct($name); // 此時沒有找到父類(Birds類)合適的構(gòu)造函數(shù),只能向上搜索,搜索到Animal類時,才找到合適的構(gòu)造函數(shù)
    echo "鸚鵡類被創(chuàng)建!";
    $this->smackTalk();
    /*
    輸出結(jié)果:
    "動物類被創(chuàng)建!"
    "鸚鵡說話!"
    */
  }
  function smackTalk(){
    echo "鸚鵡說話!";
  }
}

如果想要依次調(diào)用幾個父類的構(gòu)造函數(shù),可以使用類名直接調(diào)用構(gòu)造函數(shù),例如:

function __construct($name,$leg){
    Animal::__construct($name); // 調(diào)用Animal構(gòu)造函數(shù)
    Birds::__construct($name,$leg); // 調(diào)用Birds構(gòu)造函數(shù)
}

2.析構(gòu)函數(shù)

析構(gòu)方法允許在銷毀一個對象之前執(zhí)行一些特定的操作,例如關(guān)閉文件,釋放結(jié)果集等。

當(dāng)堆內(nèi)存段中的對象失去訪問它的引用時,它就不能被訪問了,也就成為垃圾對象了。通常對象的引用被賦予其他的值或者是在頁面運行結(jié)束時,對象都會失去引用。

析構(gòu)函數(shù)是在銷毀對象時,自動調(diào)用的,不能顯式的調(diào)用。析構(gòu)函數(shù)不能帶參數(shù)。

析構(gòu)方法的聲明格式如下:

function __deconstruct(){
  //方法體,通常用來完成一些在對象銷毀前的清理任務(wù)
}

在以下幾種情況下可能會調(diào)用析構(gòu)函數(shù)(但不一定):

  • PHP頁面加載完畢之后;
  • unset()類;
  • 變量引用指向別的對象或值時;
  • PHP的內(nèi)存回收機制和JAVA的很類似,對沒有任何引用的對象進(jìn)行銷毀回收,采用引用計數(shù)器的技術(shù)。

例子:

?php
class test{
  function __destruct(){
    echo "當(dāng)對象銷毀時會調(diào)用!!!";
  }
}
$a = $b = $c = new test();
$a = null;
unset($b);
echo "hr />";
?>

此例子,如下圖,有三個變量引用$a,$b,$c指向test對象,test對象就有3個引用計數(shù),當(dāng)$a = null時,$a對test對象的引用丟失,計數(shù)-1,變?yōu)?,當(dāng)$b被unset()時,$b對test對象的引用也丟失了,計數(shù)再-1,變?yōu)?,最后頁面加載完畢,$c指向test對象的引用自動被釋放,此時計數(shù)再-1,變?yōu)?,test對象已沒有變量引用,就會被銷毀,此時就會調(diào)用析構(gòu)函數(shù)。

在PHP中析構(gòu)方法并不是很常用,它屬于類中可選的一部分,只有需要時才在類中聲明。

?php
class Person{
  var $name;
  var $sex;
  var $age;
  function __construct($name, $sex, $age){
    $this->name = $name;
    $this->sex = $sex;
    $this->age = $age;
  }
  function __destruct(){
    echo "再見" . $this->name . "br />";
  }
}
$person1 = new Person("張三三", "男", 23);
$person1 = null;  //第一個對象將失去引用
$person2 = new Person("李四四", "女", 17);
$person3 = new Person("王五五", "男", 43);
?>

運行結(jié)果:

再見張三三
再見王五五
再見李四四

第一個對象在聲明完成以后,它的引用就被賦予了空值,所以第一個對象最先失去的引用,不能再被訪問了,人后自動調(diào)用第一個對象中的析構(gòu)方法輸出“再見張三三”。后面聲明的兩個對象都是在頁面執(zhí)行結(jié)束時失去的引用,也都自動調(diào)用了析構(gòu)方法。但因為對象的引用都是放在棧內(nèi)存中的,由于棧的后進(jìn)先出特點,最后創(chuàng)建的對象會被最先釋放,多以先自動調(diào)用第三個對象的析構(gòu)方法,最后才調(diào)用第二個對象的析構(gòu)方法。

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家PHP程序設(shè)計有所幫助。

您可能感興趣的文章:
  • PHP面向?qū)ο蟪绦蛟O(shè)計中的self、static、parent關(guān)鍵字用法分析
  • php面向?qū)ο蟪绦蛟O(shè)計入門教程
  • PHP面向?qū)ο蟪绦蛟O(shè)計子類擴(kuò)展父類(子類重新載入父類)操作詳解
  • PHP面向?qū)ο蟪绦蛟O(shè)計模擬一般面向?qū)ο笳Z言中的方法重載(overload)示例
  • PHP面向?qū)ο蟪绦蛟O(shè)計重載(overloading)操作詳解
  • php面向?qū)ο笾攸c知識分享

標(biāo)簽:衡陽 臨沂 鷹潭 重慶 銅陵 巴彥淖爾 十堰 麗江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP面向?qū)ο蟪绦蛟O(shè)計之構(gòu)造方法和析構(gòu)方法詳解》,本文關(guān)鍵詞  PHP,面向,對象,程序設(shè)計,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP面向?qū)ο蟪绦蛟O(shè)計之構(gòu)造方法和析構(gòu)方法詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP面向?qū)ο蟪绦蛟O(shè)計之構(gòu)造方法和析構(gòu)方法詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产视频久久久久| 精品国产亚洲一区二区三区| 久草免费资源| 精品视频免费观看| 久草免费资源| 国产视频一区在线| 成人高清护士在线播放| 精品久久久久久中文字幕2017| 欧美1区| 91麻豆国产| 日日夜夜婷婷| 国产美女在线观看| 欧美日本韩国| 一级毛片视频在线观看| 国产91精品系列在线观看| 午夜在线影院| 国产一区二区精品久久91| 精品久久久久久综合网| 亚洲www美色| 日本免费看视频| 青青久久精品国产免费看| 台湾毛片| 日韩中文字幕在线播放| 天天做人人爱夜夜爽2020| 精品国产香蕉在线播出 | 日韩中文字幕一区二区不卡| 999久久狠狠免费精品| 精品国产亚洲人成在线| 久久国产精品自由自在| 欧美一区二区三区性| 成人免费高清视频| 美女免费精品高清毛片在线视| 色综合久久手机在线| 亚飞与亚基在线观看| 天堂网中文字幕| 一级毛片视频在线观看| 国产网站麻豆精品视频| 欧美1区| 一级女性全黄生活片免费| 国产亚洲精品成人a在线| 国产韩国精品一区二区三区| 你懂的日韩| 99久久网站| 国产高清在线精品一区a| 成人影院久久久久久影院| 成人免费观看视频| 九九久久99综合一区二区| 韩国毛片 免费| 国产成人啪精品| 日本免费看视频| 欧美a级大片| 美女被草网站| 99久久精品国产高清一区二区| 精品国产一区二区三区免费| 国产一区二区高清视频| 成人a大片在线观看| 精品视频一区二区三区| 可以免费看污视频的网站| 四虎久久精品国产| 午夜激情视频在线播放| 成人高清视频免费观看| 97视频免费在线| 国产精品1024永久免费视频| 精品国产香蕉在线播出| 精品视频一区二区三区免费| 99热精品一区| 国产不卡高清在线观看视频| 高清一级做a爱过程不卡视频| 国产麻豆精品视频| 欧美日本韩国| 国产伦精品一区二区三区在线观看| 99久久精品国产国产毛片| 一级女性全黄生活片免费| 亚洲天堂在线播放| 国产一区二区精品在线观看| 黄色福利片| 欧美激情伊人| 国产高清视频免费观看| 九九九国产| 台湾毛片| 国产视频一区在线| 免费国产在线观看| 国产美女在线观看| 四虎影视精品永久免费网站| 国产亚洲男人的天堂在线观看| 黄视频网站在线观看| 国产亚洲免费观看| 91麻豆精品国产高清在线| 日韩中文字幕一区| 韩国三级香港三级日本三级| 一级毛片视频在线观看| 91麻豆精品国产高清在线| 美女被草网站| 免费国产在线视频| 九九精品久久| 国产一区二区精品久久91| 高清一级片| 天天做人人爱夜夜爽2020| 国产a视频| 国产伦精品一区三区视频 | 精品国产亚洲一区二区三区| 国产国语对白一级毛片| 国产一区二区精品久久91| 99久久精品国产免费| 久草免费在线色站| 国产成人女人在线视频观看| 青草国产在线观看| 日韩男人天堂| 精品视频在线观看一区二区 | 精品国产一区二区三区久| 成人高清视频免费观看| 色综合久久天天综合| 日本免费区| 可以免费看污视频的网站| 日本在线不卡免费视频一区| 久久国产影院| 久久精品店| 91麻豆国产| 免费一级片网站| 可以免费在线看黄的网站| 日韩中文字幕在线播放| 在线观看导航| 国产国语在线播放视频| 国产网站免费视频| 香蕉视频亚洲一级| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 亚洲 男人 天堂| 国产麻豆精品视频| 国产高清在线精品一区二区| 欧美另类videosbestsex| 色综合久久天天综合绕观看| 日韩中文字幕在线播放| 久久国产精品自由自在| 欧美1区| 日韩中文字幕一区| 国产精品自拍一区| 亚洲不卡一区二区三区在线 | 青青青草视频在线观看| 久草免费在线视频| 欧美另类videosbestsex高清| 国产网站免费| 精品国产亚一区二区三区| 一本伊大人香蕉高清在线观看| 精品视频在线观看一区二区 | 日本伦理黄色大片在线观看网站| 日本在线不卡免费视频一区| 国产不卡精品一区二区三区| 精品国产亚洲一区二区三区| 精品久久久久久免费影院| 亚洲精品中文字幕久久久久久| 国产伦久视频免费观看视频| 九九精品影院| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 日本特黄特黄aaaaa大片| 欧美a免费| 日韩免费片| 国产极品白嫩美女在线观看看| 精品久久久久久中文| 国产91精品系列在线观看| 亚久久伊人精品青青草原2020| 一级片片| 亚欧乱色一区二区三区| 99色视频在线| 国产一区免费观看| 成人在免费观看视频国产| 天堂网中文字幕| 欧美激情一区二区三区视频 | 国产不卡精品一区二区三区| 国产精品自拍一区| 国产精品12| 天天做人人爱夜夜爽2020毛片| 四虎影视久久| 韩国妈妈的朋友在线播放| 尤物视频网站在线观看| 午夜激情视频在线播放| 亚洲爆爽| 青青青草影院 | 久久国产精品自线拍免费| 欧美国产日韩一区二区三区| 九九热精品免费观看| 美女被草网站| 精品视频在线观看免费| 国产成人欧美一区二区三区的| 精品视频在线观看免费| 可以免费在线看黄的网站| 日本乱中文字幕系列| 日韩av成人| 毛片的网站| 二级片在线观看| 久久成人性色生活片| 99久久精品国产高清一区二区 | 亚洲 欧美 91| 免费国产在线观看| 国产原创视频在线| 青青青草影院 | 国产成人精品在线| 尤物视频网站在线观看| 香蕉视频亚洲一级| 毛片高清| 四虎影视库|