最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ì)象訪問不存在的方法名稱時(shí),__call()方法會(huì)被自動(dòng)調(diào)用

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

通過這兩個(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()

在給不可訪問屬性賦值時(shí),__set()會(huì)被調(diào)用
讀取不可訪問屬性的值時(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
?>

讀取不可訪問屬性的值時(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ì)不可訪問屬性調(diào)用isset()或empty()時(shí),__isset()會(huì)被調(diào)用
當(dāng)對(duì)不可訪問屬性調(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+ajax無刷新上傳圖片實(shí)例代碼

    php+ajax無刷新上傳圖片實(shí)例代碼

    這篇文章為大家分享了php+ajax無刷新上傳圖片實(shí)例代碼,需要的朋友可以參考下
    2015-11-11
  • php生成驗(yàn)證碼函數(shù)

    php生成驗(yàn)證碼函數(shù)

    這篇文章主要介紹了php生成驗(yàn)證碼函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • 訪問編碼后的中文URL返回404錯(cuò)誤的解決方法

    訪問編碼后的中文URL返回404錯(cuò)誤的解決方法

    這篇文章主要介紹了訪問編碼后的中文URL返回404錯(cuò)誤的解決方法,本文使用的是替換方法,當(dāng)然也可以使用加密方法來解決,最后附妹子圖一張,需要的朋友可以參考下
    2014-08-08
  • php使用yield對(duì)性能提升的測(cè)試實(shí)例分析

    php使用yield對(duì)性能提升的測(cè)試實(shí)例分析

    這篇文章主要介紹了php使用yield對(duì)性能提升的測(cè)試,結(jié)合具體實(shí)例形式對(duì)比分析了php使用yield及常規(guī)操作的運(yùn)算耗時(shí)與內(nèi)存占用情況,測(cè)試了yield對(duì)性能的提升大小,需要的朋友可以參考下
    2019-09-09
  • 解析php file_exists無效的解決辦法

    解析php file_exists無效的解決辦法

    本篇文章是對(duì)php中file_exists無效的解決辦法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php數(shù)據(jù)庫配置文件一般做法分享

    php數(shù)據(jù)庫配置文件一般做法分享

    將數(shù)據(jù)庫用戶名密碼等信息寫到配置文件config.php里,在在需要引用配置文件內(nèi)容的文件里用include或require包含進(jìn)來,并在函數(shù)里用global關(guān)鍵字將存放數(shù)據(jù)庫名,密碼等的變量全局化,這樣就可以在文件里的函數(shù)里使用了
    2012-07-07
  • PHP 實(shí)現(xiàn)的將圖片轉(zhuǎn)換為TXT

    PHP 實(shí)現(xiàn)的將圖片轉(zhuǎn)換為TXT

    今天在用PHP寫一個(gè)小插件的時(shí)候,遇到了一個(gè)小小的問題,就是需要將圖片轉(zhuǎn)換為TXT文本的內(nèi)容。簡(jiǎn)單的說就是將圖片轉(zhuǎn)換為ASCII碼,下面把代碼分享給大家。
    2015-10-10
  • PHP開啟opcache提升代碼性能

    PHP開啟opcache提升代碼性能

    APC在PHP5.4及以下版本是性能最好的代碼緩存。不過PHP升級(jí)到5.5及以上后,APC不再有效。需要使用Zend的OpCache擴(kuò)展。
    2015-04-04
  • php正則替換處理HTML頁面的方法

    php正則替換處理HTML頁面的方法

    這篇文章主要介紹了php正則替換處理HTML頁面的方法,涉及php針對(duì)html頁面常見元素的匹配技巧,需要的朋友可以參考下
    2015-06-06
  • 深入解析php中的foreach函數(shù)

    深入解析php中的foreach函數(shù)

    以下是對(duì)php中的foreach函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08

最新評(píng)論

高密市| 繁峙县| 岳普湖县| 三江| 稷山县| 石林| 三江| 光泽县| 偏关县| 西华县| 交城县| 肃南| 徐闻县| 五常市| 留坝县| 和平县| 额济纳旗| 永平县| 阜平县| 汉寿县| 琼中| 西盟| 麦盖提县| 连南| 岚皋县| 贡嘎县| 伊宁市| 略阳县| 丰县| 宁德市| 寿阳县| 察哈| 托克逊县| 澄迈县| 龙州县| 虞城县| 宜宾市| 揭西县| 内江市| 临桂县| 江油市|