大多數(shù)類都有一種稱為構(gòu)造函數(shù)的特殊方法,當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),它將自動(dòng)調(diào)用構(gòu)造函 數(shù),也就是使用new 這個(gè)關(guān)鍵字來(lái)實(shí)例化對(duì)象的時(shí)候自動(dòng)調(diào)用構(gòu)造方法.
構(gòu)造函數(shù)的聲明與其它操作的聲明一樣,只是其名稱必須是__construct( ),這是PHP5 中 的變化,以前的版本中,構(gòu)造函數(shù)的名稱必須與類名相同,這種在PHP5 中仍然可以用,但 現(xiàn)在以經(jīng)很少有人用了,這樣做的好處是可以使構(gòu)造函數(shù)獨(dú)立于類名,當(dāng)類名發(fā)生改變時(shí)不 需要改相應(yīng)的構(gòu)造函數(shù)名稱了,為了向下兼容,如果一個(gè)類中沒有名為__construct( )的方法,PHP 將搜索一個(gè)php4 中的寫法,與類名相同名的構(gòu)造方法.
格式:function __construct ( [參數(shù)] ) { ... ... }
在一個(gè)類中只能聲明一個(gè)構(gòu)造方法,而是只有在每次創(chuàng)建對(duì)象的時(shí)候都會(huì)去調(diào)用一次構(gòu) 造方法,不能主動(dòng)的調(diào)用這個(gè)方法,所以通常用它執(zhí)行一些有用的初始化任務(wù),比如對(duì)成屬 性在創(chuàng)建對(duì)象的時(shí)候賦初值.
PHP實(shí)例代碼如下:
- <?php
- /*
- * 1.對(duì)象中成員的訪問(wèn)(在一個(gè)對(duì)象的內(nèi)部方法中,去訪問(wèn)本對(duì)軒昂中的其他方法和成員屬性)
- * 2.在對(duì)象中的方法中都默認(rèn)有一個(gè)$this關(guān)鍵字,這個(gè)關(guān)鍵字代表調(diào)用這個(gè)方法的對(duì)象
- *
- * 構(gòu)造方法
- *
- * 1.是對(duì)象創(chuàng)建完成后,“第一個(gè)”“自動(dòng)調(diào)用”的方法
- *
- * 2.構(gòu)造方法的定義,方法名是一個(gè)固定的,
- * 在php4中:和類名相同的方法就是構(gòu)造方法
- * 在php5中:構(gòu)造方法選擇使用 魔術(shù)方法__construct() 所有類中聲明構(gòu)造方法都使用這個(gè)名稱
- * 優(yōu)點(diǎn):在改變類名時(shí),構(gòu)造方法不用改變
- * 魔術(shù)方法: 在類中寫出了某個(gè)魔術(shù)方法,這個(gè)方法對(duì)應(yīng)的功能就會(huì)添加上
- * 方法名稱都是固定的(都是系統(tǒng)提供好的),沒有自己定義的
- * 每一個(gè)魔術(shù)方法,都是在不同時(shí)刻為了完成某一功能自動(dòng)調(diào)用的方法
- * 不同的魔術(shù)方法有不同的調(diào)用時(shí)機(jī)
- * 都是以 __ 開頭的方法
- * __construct(); __destruct(); __set();......
- *
- * 作用:為成員屬性初始化;
- *
- *
- * 析構(gòu)方法
- *
- * 1.當(dāng)對(duì)象被釋放之前最后一個(gè)“自動(dòng)”調(diào)用的方法
- * 使用垃圾回收器(java php),而c++手動(dòng) 的釋放
- *
- * 作用:關(guān)閉一些資源,作一些清理的工作
- *
- * __destruct();
- *
- */
- class Person{
- var $name;
- var $age;
- var $sex;
- //php4中的構(gòu)造方法
- /*function Person()
- {
- //每聲明一個(gè)對(duì)象都會(huì)調(diào)用
- echo "1111111111111111";
- }*/
- //php5中的構(gòu)造方法
- function __construct($name,$age,$sex){
- $this->name=$name;
- $this->age=$age;
- $this->sex=$sex;
- }
- function say(){
- //$this->name;//對(duì)象中成員的訪問(wèn)使用$this
- echo "我的名字:{$this->name},我的年齡:{$this->age}<br>"
- }
- function run(){
- }
- function eat(){
- }
- //析構(gòu)方法
- function __destruct(){
- //開源代碼Vevb.com
- }
- }
- $p1=new Person("zhangsan",25,"男");
- $p2=new Person;
- $p3=new Person;
- ?>
新聞熱點(diǎn)
疑難解答