欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

php的魔術(shù)方法是什么

這篇文章給大家分享的是有關(guān)php的魔術(shù)方法。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧。

柳州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!

構(gòu)造方法

大多數(shù)類(lèi)都有一種稱(chēng)為構(gòu)造函數(shù)的特殊方法。當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),它將自動(dòng)調(diào)用構(gòu)造函數(shù),通常用它執(zhí)行一些有用的初始化任務(wù)

構(gòu)造函數(shù)的聲明與其它操作的聲明一樣,只是其名稱(chēng)必須是兩個(gè)下劃線__construct( )。這是PHP5中的變化;PHP4的版本中,構(gòu)造函數(shù)的名稱(chēng)必須與類(lèi)名相同。為了向下兼容,如果一個(gè)類(lèi)中沒(méi)有名為_(kāi)_construct( )的方法,PHP將搜索一個(gè)與類(lèi)名相同的方法

void __construct ([ mixed $args [, $... ]] )

如果子類(lèi)中定義了構(gòu)造函數(shù)則不會(huì)隱式調(diào)用其父類(lèi)的構(gòu)造函數(shù)。要執(zhí)行父類(lèi)的構(gòu)造函數(shù),需要在子類(lèi)的構(gòu)造函數(shù)中調(diào)用 parent::__construct()。如果子類(lèi)沒(méi)有定義構(gòu)造函數(shù)則會(huì)如同一個(gè)普通的類(lèi)方法一樣從父類(lèi)繼承(假如沒(méi)有被定義為 private 的話)

<?phpclass BaseClass {
   function __construct() {
       print "In BaseClass constructor
";
   }
}class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();       print "In SubClass constructor
";
   }
}

析構(gòu)方法

與構(gòu)造方法相對(duì)的就是析構(gòu)方法。析構(gòu)方法是PHP5新添加的內(nèi)容,在PHP4中沒(méi)有析構(gòu)方法。析構(gòu)方法是在對(duì)象被銷(xiāo)毀之前自動(dòng)調(diào)用的方法,主要執(zhí)行一些特定的操作,例如關(guān)閉文件,釋放結(jié)果集等

與構(gòu)造方法類(lèi)似,一個(gè)類(lèi)的析構(gòu)方法名稱(chēng)必須是兩個(gè)下劃線 __destruct( )。析構(gòu)函數(shù)不能帶有任何參數(shù)

<?phpclass MyDestructableClass {
   function __construct() {
       print "In constructor
";       $this->name = "MyDestructableClass";
   }   function __destruct() {
       print "Destroying " . $this->name . "
";
   }
}//In constructor Destroying MyDestructableClass$obj = new MyDestructableClass();?>

不可訪問(wèn)屬性

get()

讀取不可訪問(wèn)屬性(protected、private)時(shí),__get()會(huì)被調(diào)用,并將屬性名以第一個(gè)參數(shù)(string)傳進(jìn)此方法中

public mixed __get ( string $name )

<?phpclass demo{
    protected $protected = 1;    public $public = 2;    private $private = 3;    function __get($name){
        echo "111{$name}111<br>";
    }
}$d1 = new demo;$d1->protected;//111protected111$d1->public;$d1->private;//111private111?>

set()

在給不可訪問(wèn)屬性(protected、private)賦值時(shí),__set() 會(huì)被調(diào)用,并將屬性名以第一個(gè)參數(shù)(string),值作為第二參數(shù)(mixed)傳進(jìn)此方法中

public void __set ( string $name , mixed $value )
<?phpclass demo{
    protected $protected = 1;    public $public = 2;    private $private = 3;    function __set($name,$value){
        echo "0{$name}0{$value}<br>";
    }
}

isset()

當(dāng)對(duì)不可訪問(wèn)屬性(protected、private)調(diào)用 isset() 或 empty() 時(shí),__isset() 會(huì)被調(diào)用

public bool __isset ( string $name )
<?phpclass demo{
    protected $protected = 1;    public $public = 2;    private $private = 3;    function __isset($name){
        echo "0{$name}0<br>";
    }
}

unset()

當(dāng)對(duì)不可訪問(wèn)屬性(protected、private)調(diào)用unset()時(shí),__unset()會(huì)被調(diào)用

public void __unset ( string $name )

<?phpclass demo{
    protected $protected = 1;    public $public = 2;    private $private = 3;    function __unset($name){
        echo "0{$name}0<br>";
    }
}

對(duì)象復(fù)制

clone()

在對(duì)象克隆時(shí)會(huì)自動(dòng)調(diào)用clone()方法,這方法不需要任何參數(shù),可以通過(guò)該方法對(duì)克隆后的副本重新初始化

clone()方法會(huì)自動(dòng)包含this和that兩個(gè)對(duì)象的引用,this是副本對(duì)象的引用,that是原本對(duì)象的引用

<?php
    class Person{
        private $name;        private $sex;        private $age;        function __construct($name="",$sex="",$age=1){
            $this->name= $name;            $this->sex = $sex;            $this->age = $age;
        }        function __clone(){
            $this->name = $this->name."的副本";
        }        function say(){
            echo "我的名字:" .$this->name.",性別:".$this->sex.",年齡:".$this->age."<br>";
        }
    }

字符串

toString()

__toString()方法用于一個(gè)類(lèi)被當(dāng)成字符串時(shí)應(yīng)怎樣回應(yīng),它是快速獲取對(duì)象的字符串表示的最便捷的方式,是直接輸出對(duì)象引用時(shí)自動(dòng)調(diào)用的方法

<?phpclass TestClass{
   public $foo;    public function __construct($foo)
   {
       $this->foo = $foo;
   }    public function __toString() {
       return $this->foo;
   }
}$class = new TestClass('Hello');echo $class;//Hello?>

對(duì)象不存在

call()

在對(duì)象中調(diào)用一個(gè)不可訪問(wèn)方法時(shí),__call()會(huì)被調(diào)用

callStatic()

在靜態(tài)上下文中調(diào)用一個(gè)不可訪問(wèn)方法時(shí),__callStatic()會(huì)被調(diào)用

<?phpclass MethodTest {
    public function __call($name, $arguments) 
    {
        echo "Calling object method '$name' "
             . implode(', ', $arguments). "
";
    }    public static function __callStatic($name, $arguments) 
    {
        echo "Calling static method '$name' "
             . implode(', ', $arguments). "
";
    }
}

自動(dòng)加載類(lèi)

autoload()

在PHP5中,可以定義一個(gè)__autoload()函數(shù),它會(huì)在試圖使用尚未被定義的類(lèi)時(shí)自動(dòng)調(diào)用。通過(guò)調(diào)用此函數(shù),腳本引擎在PHP出錯(cuò)失敗前有了最后一個(gè)機(jī)會(huì)加載所需的類(lèi)

<?phpfunction __autoload($class_name) {
    require_once $class_name . '.php';
}

串行化

sleep()

在調(diào)用serialize()函數(shù)將對(duì)象串行化時(shí),檢查類(lèi)中是否存在一個(gè)魔術(shù)方法 __sleep()。如果存在,該方法會(huì)先被調(diào)用,然后才執(zhí)行序列化操作。此功能可以用于清理對(duì)象,并返回一個(gè)包含對(duì)象中所有應(yīng)被序列化的變量名稱(chēng)的數(shù)組。如果該方法未返回任何內(nèi)容,則 NULL 被序列化,并產(chǎn)生一個(gè) E_NOTICE 級(jí)別的錯(cuò)誤

__sleep()函數(shù)不需要接受任何參數(shù),但需要返回一個(gè)數(shù)組,在數(shù)組中包含需要串行化的屬性。未被包含在數(shù)組中的屬性將在串行化時(shí)被忽略。如果沒(méi)有在類(lèi)中聲明__sleep()方法,對(duì)象中的所有屬性都將被串行化

wakeup()

在調(diào)用unserialize()函數(shù)將對(duì)象反串行化對(duì)象時(shí),則會(huì)自動(dòng)調(diào)用對(duì)象中的__wakeup()方法,用來(lái)在二進(jìn)制串重新組成一個(gè)對(duì)象時(shí),為新對(duì)象中的成員屬性重新初始化

wakeup()經(jīng)常用在反序列化操作中,例如重新建立數(shù)據(jù)庫(kù)連接,或執(zhí)行其它初始化操作

<?phpclass Connection {
    protected $link;    private $server, $username, $password, $db;  
    public function __construct($server, $username, $password, $db)
    {
        $this->server = $server;        $this->username = $username;        $this->password = $password;        $this->db = $db;        $this->connect();
    }    private function connect()
    {
        $this->link = MySQL_connect($this->server, $this->username, $this->password);        mysql_select_db($this->db, $this->link);
    }    public function __sleep()
    {
        return array('server', 'username', 'password', 'db');
    }    public function __wakeup()
    {
        $this->connect();
    }
}?>

函數(shù)調(diào)用

invoke()

當(dāng)嘗試以調(diào)用函數(shù)的方式調(diào)用一個(gè)對(duì)象時(shí),__invoke()方法會(huì)被自動(dòng)調(diào)用

<?phpclass CallableClass {
    function __invoke($x) {
        var_dump($x);
    }
}

【補(bǔ)充】

set_state()

當(dāng)調(diào)用var_export()導(dǎo)出類(lèi)時(shí),set_state()方法會(huì)被調(diào)用,本方法的唯一參數(shù)是一個(gè)數(shù)組,其中包含按 array('property' => value, ...) 格式排列的類(lèi)屬性

[注意]var_export()返回關(guān)于傳遞給該函數(shù)的變量的結(jié)構(gòu)信息,它和var_dump()類(lèi)似,不同的是其返回的表示是合法的PHP代碼,也就是說(shuō),var_export返回的代碼,可以直接當(dāng)作php代碼賦給一個(gè)變量。 而這個(gè)變量就會(huì)取得和被var_export一樣的類(lèi)型的值

<?phpclass A{
   public $var1;    public $var2;    public static function __set_state($an_array)
   {
       $obj = new A;        $obj->var1 = $an_array['var1'];        $obj->var2 = $an_array['var2'];        return $obj;
   }
}

看完上述內(nèi)容,你們對(duì)php的魔術(shù)方法有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。

新聞名稱(chēng):php的魔術(shù)方法是什么
標(biāo)題來(lái)源:http://aaarwkj.com/article6/peioog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、定制網(wǎng)站、電子商務(wù)、網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
亚洲综合中文字幕日韩| 蜜臀国产综合久久第一页| 欧美日韩性性在线观看| 国产一区二区三区av| 中文字幕人妻丝袜二区| 伊人欧美一区二区三区| 91午夜福利视频免费播放| 亚洲美女香蕉视频在线| 国产一区二区高清不卡| 成年人在线观看免费观看| 国产日韩精品国产二区| 在线播放av男人的天堂| 好色人妻在线播放中文字幕| 麻豆乱淫一区二区三爱免费| 黑丝美女被内射视频免费观看| 成人午夜黄色福利视频| 免费观看国产性生活片| 亚洲一区二区三区国色天香| 精华国产一区二区三区| 粉嫩一区二区三区精品视频| 人人妻人人澡人人妻| 丰满人妻熟妇乱精品视频| 精品欧美国产日韩在线观看| 日本韩国欧美在线一区| 亚洲伊人av第一页在线观看| 黄色av手机在线观看| 亚洲毛片免费视频久久| 一本久久综合亚洲鲁鲁五月天 | 国产女孩精品在线播放| 夜夜爽精品国产亚洲av成人| 久久九九精品日本人妻视频| 真实国产熟女一区二区三区| 国产高清内射一级一片高清视频| 欧美国产一级二级三级| 日韩大片一区二区三区在线观看 | 精品女同一区二区三区网站 | 中文字幕亚洲精品视频| 亚洲激情视频在线视频| 91超碰这里只有精品国产| 精品人妻一区二区三区免费视频| 国产精品亚洲一区二区在|