婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP面向對象程序設計之構造方法和析構方法詳解

PHP面向對象程序設計之構造方法和析構方法詳解

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

本文實例講述了PHP面向對象程序設計之構造方法和析構方法。分享給大家供大家參考,具體如下:

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

1.構造方法

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

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

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

在PHP中,同一個類中只能聲明一個構造方法。原因是構造方法名稱是固定的,在PHP中不能聲明同名的兩個函數,所以也就沒有構造方法重載。但可以在聲明構造方法時使用默認參數,實現其他面向對象的編程語言中構造方法重載的功能。這樣在創建對象時,如果在構造方法中沒有傳入參數,則使用默認參數為成員屬性進行初始化。

  • 構造函數可以接受參數,能夠在創建對象時賦值給對象屬性
  • 構造函數可以調用類方法或其他函數
  • 構造函數可以調用其他類的構造函數

構造函數使用例子:

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

調用父類構造函數、調用無關類的構造函數:

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

繼承和構造函數

PHP中的子類的構造函數不會主動調用父類的構造函數,要顯示的使用parent::__construct()調用:

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

如果涉及多層繼承,當調用parent::__construct()時,會沿著父類向上搜索,直到找到最合適的構造函數,例如:

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

如果想要依次調用幾個父類的構造函數,可以使用類名直接調用構造函數,例如:

function __construct($name,$leg){
    Animal::__construct($name); // 調用Animal構造函數
    Birds::__construct($name,$leg); // 調用Birds構造函數
}

2.析構函數

析構方法允許在銷毀一個對象之前執行一些特定的操作,例如關閉文件,釋放結果集等。

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

析構函數是在銷毀對象時,自動調用的,不能顯式的調用。析構函數不能帶參數。

析構方法的聲明格式如下:

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

在以下幾種情況下可能會調用析構函數(但不一定):

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

例子:

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

此例子,如下圖,有三個變量引用$a,$b,$c指向test對象,test對象就有3個引用計數,當$a = null時,$a對test對象的引用丟失,計數-1,變為2,當$b被unset()時,$b對test對象的引用也丟失了,計數再-1,變為1,最后頁面加載完畢,$c指向test對象的引用自動被釋放,此時計數再-1,變為0,test對象已沒有變量引用,就會被銷毀,此時就會調用析構函數。

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

?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);
?>

運行結果:

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

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

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

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

您可能感興趣的文章:
  • PHP面向對象程序設計中的self、static、parent關鍵字用法分析
  • php面向對象程序設計入門教程
  • PHP面向對象程序設計子類擴展父類(子類重新載入父類)操作詳解
  • PHP面向對象程序設計模擬一般面向對象語言中的方法重載(overload)示例
  • PHP面向對象程序設計重載(overloading)操作詳解
  • php面向對象重點知識分享

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

巨人網絡通訊聲明:本文標題《PHP面向對象程序設計之構造方法和析構方法詳解》,本文關鍵詞  PHP,面向,對象,程序設計,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP面向對象程序設計之構造方法和析構方法詳解》相關的同類信息!
  • 本頁收集關于PHP面向對象程序設計之構造方法和析構方法詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产欧美日韩麻豆91| 亚洲国产一区二区a毛片| 国产精品网曝门| 国产在线不卡一区| 884aa四虎影成人精品一区| 亚洲一二三区视频在线观看| 99久久国产综合精品麻豆| 国产精品久线观看视频| 国产一区二区h| 国产亚洲精品福利| 91视频一区二区三区| 亚洲人成网站色在线观看| 99精品国产99久久久久久白柏 | 日韩欧美一二区| 蜜臀99久久精品久久久久久软件| 欧美丰满少妇xxxxx高潮对白| 婷婷开心激情综合| 精品成人免费观看| 高潮精品一区videoshd| 夜夜嗨av一区二区三区| 日韩一区二区中文字幕| 国产在线不卡一卡二卡三卡四卡| 日韩精品综合一本久道在线视频| 风间由美一区二区av101 | 欧美一级夜夜爽| 国产精品亚洲第一区在线暖暖韩国| 国产欧美日韩三区| 7777精品伊人久久久大香线蕉| 国产成人免费视频精品含羞草妖精| 亚洲摸摸操操av| 26uuu成人网一区二区三区| 91亚洲午夜精品久久久久久| 午夜精品一区二区三区免费视频| 久久久99免费| 欧美精品亚洲一区二区在线播放| 国产麻豆视频精品| 亚洲伊人伊色伊影伊综合网| 精品日韩一区二区三区免费视频| 成人性生交大片免费看在线播放| 偷拍一区二区三区四区| 日韩美女视频一区| 国产午夜亚洲精品理论片色戒| 欧美日本国产视频| 91蝌蚪国产九色| 国产寡妇亲子伦一区二区| 天堂一区二区在线免费观看| 亚洲天堂福利av| 中国色在线观看另类| 欧美精品一区二区三区久久久| 欧美最新大片在线看| 99久久精品免费看国产| 国产精品一线二线三线| 男人的天堂亚洲一区| 日日夜夜免费精品| 亚洲va欧美va国产va天堂影院| 亚洲欧洲性图库| 亚洲手机成人高清视频| 国产精品久久精品日日| 国产精品麻豆欧美日韩ww| 中文字幕二三区不卡| 国产精品免费久久久久| 亚洲国产精品t66y| 亚洲国产成人一区二区三区| 久久女同精品一区二区| 欧美精品一区二区久久久| 欧美xxxx老人做受| www国产成人| 久久久亚洲国产美女国产盗摄| 久久久久亚洲综合| 中文无字幕一区二区三区 | 国产精品自拍毛片| 国产在线播放一区| 成人免费观看视频| 91丨九色porny丨蝌蚪| 欧美视频一区二区三区四区| 欧美伊人久久大香线蕉综合69| 91首页免费视频| 欧美三级蜜桃2在线观看| 欧美日韩视频在线一区二区| 欧美一区二区三区公司| 久久精品亚洲麻豆av一区二区 | 久久爱www久久做| 国产91精品一区二区| 一本到不卡免费一区二区| 欧美日韩你懂的| 欧美成人免费网站| 中文字幕亚洲一区二区va在线| 亚洲小少妇裸体bbw| 免费久久99精品国产| 粉嫩蜜臀av国产精品网站| 色哟哟在线观看一区二区三区| 欧美日韩精品系列| 国产欧美日韩视频一区二区| 亚洲精品久久久久久国产精华液| 亚洲成a人片在线不卡一二三区| 另类小说色综合网站| 99久久夜色精品国产网站| 欧美一区二区三区免费在线看 | 精品久久久久久久一区二区蜜臀| 国产午夜亚洲精品理论片色戒| 亚洲女人****多毛耸耸8| 日韩 欧美一区二区三区| 成人黄色小视频在线观看| 欧美日本韩国一区二区三区视频| 久久综合狠狠综合久久激情| 亚洲免费电影在线| 久久精品国产99| 欧美日免费三级在线| 国产精品嫩草影院com| 久久精品免费看| 91啪在线观看| 久久久高清一区二区三区| 亚洲一区二区三区美女| 九色porny丨国产精品| 91麻豆精品一区二区三区| 欧美一级一区二区| 亚洲福利一区二区| 99re亚洲国产精品| 久久久久一区二区三区四区| 日韩精品免费专区| 91色|porny| 国产欧美一区二区精品忘忧草| 日韩黄色免费电影| 日本高清不卡aⅴ免费网站| 国产欧美一区二区精品婷婷| 日韩专区一卡二卡| 欧美亚洲综合在线| 亚洲美女偷拍久久| 91在线观看视频| 日本一二三不卡| 国产精品一区在线观看乱码| 欧美在线观看一区二区| 国产精品久久久久三级| 国产一区二区三区电影在线观看 | 国产精品乱码一区二区三区软件 | 欧美亚洲一区三区| 亚洲色图.com| 色哟哟日韩精品| 亚洲三级免费电影| 99精品视频免费在线观看| 国产精品三级av在线播放| 粉嫩蜜臀av国产精品网站| 中文字幕乱码久久午夜不卡| 懂色av中文字幕一区二区三区| 日本一区二区三区国色天香 | 亚洲欧美另类小说视频| 色综合天天综合给合国产| 亚洲欧美成aⅴ人在线观看| 色婷婷亚洲综合| 亚洲18影院在线观看| 欧美视频第二页| 日韩国产精品91| 2023国产精品自拍| 成人国产精品免费观看| 亚洲综合在线免费观看| 色综合久久中文综合久久牛| 亚洲精品大片www| 在线不卡中文字幕播放| 久久99精品久久只有精品| 久久综合视频网| 99riav久久精品riav| 亚洲成人一区在线| 久久综合色之久久综合| 成人动漫av在线| 亚洲五码中文字幕| 91久久精品一区二区三| 亚洲精品中文在线影院| 欧美日韩成人在线一区| 久草在线在线精品观看| 久久综合狠狠综合久久综合88| 成人教育av在线| 亚州成人在线电影| 国产亚洲女人久久久久毛片| 风间由美一区二区三区在线观看| 日韩精品一区二区三区三区免费| 粉嫩蜜臀av国产精品网站| 亚洲精选免费视频| 日韩视频免费观看高清完整版在线观看| 激情文学综合插| 国产精品盗摄一区二区三区| 欧美日韩国产乱码电影| 国产麻豆午夜三级精品| 亚洲午夜在线观看视频在线| 久久亚洲二区三区| 不卡高清视频专区| 日本不卡高清视频| 中文字幕在线观看不卡| 日韩西西人体444www| 一本大道av伊人久久综合| 国产成人免费视频网站高清观看视频| 五月天一区二区| 亚洲精品伦理在线| 国产精品久久久久7777按摩| 久久青草欧美一区二区三区| 在线播放一区二区三区| 欧美专区亚洲专区| 91亚洲永久精品| 94-欧美-setu| 99久久伊人网影院| 国产成人精品免费在线|