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

php 魔術(shù)方法詳解

 更新時(shí)間:2014年11月11日 09:37:17   投稿:hebedich  
本文給大家介紹了php面向?qū)ο螽?dāng)中的幾個(gè)魔術(shù)方法,并對(duì)此進(jìn)行一一詳細(xì)介紹,希望對(duì)新手有所幫助。

從PHP 5以后的版本,PHP中的類就可以使用魔術(shù)方法了。其規(guī)定以兩個(gè)下劃線(__)開頭的方法都保留為魔術(shù)方法,所以建議大家函數(shù)名最好不用__開頭,除非是為了重載已有的魔術(shù)方法。PHP 將所有以 _ _(兩個(gè)下劃線)開頭的類方法保留為魔術(shù)方法。

__toString() 和__invoke()

public string __toString ( void ):當(dāng)對(duì)象被當(dāng)做string使用時(shí),這個(gè)方法會(huì)被自動(dòng)調(diào)用。此方法必須返回一個(gè)字符串

復(fù)制代碼 代碼如下:

<?php
    class Magic{
        public function  __tostring(){
            return "hello world!";
        }
    }
    $obj = new Magic();
    echo $obj;//hello world!
?>

__invoke():當(dāng)對(duì)象被當(dāng)成方法調(diào)用時(shí),這個(gè)方法會(huì)被自動(dòng)調(diào)用。

復(fù)制代碼 代碼如下:

<?php
    class Magic{
        public function  __tostring(){
            return "hello world!";
        }
        public function __invoke($x){
            echo "__invoke called with param ".$x."\n";
        }
    }
    $obj = new Magic();
    $obj(10);//__invoke called with param 10
?>

__call()和__callStatic()

__call():當(dāng)對(duì)象訪問(wèn)不存在的方法名稱時(shí),__call()方法會(huì)被自動(dòng)調(diào)用

__callStatic():當(dāng)對(duì)象訪問(wèn)不存在的靜態(tài)方法名稱時(shí),__callStatic()方法會(huì)被自動(dòng)調(diào)用

通過(guò)這兩個(gè)方法,同一個(gè)方法的名稱的調(diào)用可以對(duì)應(yīng)不同的方法實(shí)現(xiàn)

復(fù)制代碼 代碼如下:

<?php
class Magic{
   //`$name` 參數(shù)是要調(diào)用的方法名稱。`$arguments` 參數(shù)是一個(gè)枚舉數(shù)組,
  //包含著要傳遞給方法 `$name` 的參數(shù)。
        public function __call($name,$arguments){
            //implode() 函數(shù)把數(shù)組元素組合為一個(gè)字符串。implode(separator,array)
            echo "Calling " . $name ." with param: ".implode(", ",$arguments)."\n";
        }
    }
$obj = new Magic();
$obj->run("para1","para2");//obj去調(diào)用run方法,輸出:Calling run with param: para1, para2  
?>

__get()和__set()

在給不可訪問(wèn)屬性賦值時(shí),__set()會(huì)被調(diào)用
讀取不可訪問(wèn)屬性的值時(shí),__get()會(huì)被調(diào)用

復(fù)制代碼 代碼如下:

<?php
class Magic{
     //function 前要有static關(guān)鍵字
    public function __get($name){
        return "Getting the property " . $name;
    }
}
$obj = new Magic();
echo $obj->className."\n";//Getting the property className
?>

讀取不可訪問(wèn)屬性的值時(shí),__get()會(huì)被調(diào)用

復(fù)制代碼 代碼如下:

<?php
class Magic{

    public function __set($name,$value){
        echo "Setting the property " . $name ."to value ". $value ."\n";
    }
}
$obj = new Magic();
$obj->className = 'MagicClass';//Setting the property classNameto value MagicClass
?>

__isset()和__unset()

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

復(fù)制代碼 代碼如下:

<?php
class Magic{
    public function __isset($name){
        echo "__isset invoked\n";
        return true;
    }
}
$obj = new Magic();
echo '$obj->className is set?'.isset($obj->className)."\n";//__isset invoked     $obj->className is set?1
?>

以上便是8個(gè)php面向?qū)ο蟮哪g(shù)方法的介紹與示例,希望對(duì)大家能有所幫助

相關(guān)文章

  • 幾種有用的變型 PHP中循環(huán)語(yǔ)句的用法介紹

    幾種有用的變型 PHP中循環(huán)語(yǔ)句的用法介紹

    for語(yǔ)句可以說(shuō)是PHP(同時(shí)也是多種語(yǔ)言)的循環(huán)控制部份最基本的一個(gè)語(yǔ)句了,for語(yǔ)句的執(zhí)行規(guī)律和基礎(chǔ)用法在這里就不多說(shuō),可以參見(jiàn)PHP手冊(cè)for語(yǔ)句部分
    2012-01-01
  • 詳解PHP Swoole長(zhǎng)連接常見(jiàn)問(wèn)題

    詳解PHP Swoole長(zhǎng)連接常見(jiàn)問(wèn)題

    長(zhǎng)連接就是指在基于tcp的通訊中,一直保持連接,不管當(dāng)前是否發(fā)送或者接收數(shù)據(jù)。本文將詳細(xì)介紹PHP Swoole長(zhǎng)連接的常見(jiàn)問(wèn)題。
    2021-05-05
  • php array_flip() 刪除數(shù)組重復(fù)元素

    php array_flip() 刪除數(shù)組重復(fù)元素

    在PHP中,用于刪除數(shù)組中重復(fù)元素有一個(gè)可用的函數(shù),那就是 array_unique(), 但是它并不是一個(gè)最高效的方法,使用array_flip() 函數(shù)將比array_uniqure()在速度上高出五倍左右。
    2009-01-01
  • php實(shí)現(xiàn)mysql同步的實(shí)現(xiàn)方法

    php實(shí)現(xiàn)mysql同步的實(shí)現(xiàn)方法

    由于公司的英文網(wǎng)站放置在美國(guó),而這些網(wǎng)站的數(shù)據(jù)要與大陸的服務(wù)器數(shù)據(jù)同步。 同步時(shí)間在一天之內(nèi)。
    2009-10-10
  • PHP連接MongoDB示例代碼

    PHP連接MongoDB示例代碼

    這里采用默認(rèn)連接本機(jī)的27017端口,當(dāng)然你也可以連接遠(yuǎn)程主機(jī)如192.168.0.4:27017,如果端口是27017,端口可以省略
    2012-09-09
  • php實(shí)現(xiàn)將base64格式圖片保存在指定目錄的方法

    php實(shí)現(xiàn)將base64格式圖片保存在指定目錄的方法

    這篇文章主要介紹了php實(shí)現(xiàn)將base64格式圖片保存在指定目錄的方法,涉及php針對(duì)圖片文件的傳輸、判定及轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2016-10-10
  • php設(shè)計(jì)模式介紹之編程慣用法

    php設(shè)計(jì)模式介紹之編程慣用法

    《PHP設(shè)計(jì)模式介紹》第一章 編程慣用法 學(xué)習(xí)一門新的語(yǔ)言意味著要采用新的慣用法。這章將介紹或者可能重新強(qiáng)調(diào)一些慣用法。你會(huì)發(fā)現(xiàn)這些慣用法在你要在代碼中實(shí)現(xiàn)設(shè)計(jì)模式時(shí)候是非常有用的。
    2008-04-04
  • php中call_user_func函數(shù)使用注意事項(xiàng)

    php中call_user_func函數(shù)使用注意事項(xiàng)

    這篇文章主要介紹了php中call_user_func函數(shù)使用注意事項(xiàng),較為詳細(xì)的講述了call_user_func函數(shù)的用法實(shí)例與注意事項(xiàng),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php中error與exception的區(qū)別及應(yīng)用

    php中error與exception的區(qū)別及應(yīng)用

    這篇文章主要介紹了php中error與exception的區(qū)別及應(yīng)用,需要的朋友可以參考下
    2014-07-07
  • php中array_column函數(shù)簡(jiǎn)單實(shí)現(xiàn)方法

    php中array_column函數(shù)簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要介紹了php中array_column函數(shù)簡(jiǎn)單實(shí)現(xiàn)方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了array_column函數(shù)的功能,并針對(duì)低版本的情況給出了array_column函數(shù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-07-07

最新評(píng)論