1. 程式人生 > >PHP魔術方法之__call過載方法

PHP魔術方法之__call過載方法

<?php
header("content-type:text/html;charset='utf-8'");
class A{
    private $name;
    private $age = 20;

    function displayObject($p){
        print_r($p);
    }

    function displayArray($p){
        print_r($p);
    }

    function displayScalar($p){
        print_r($p);
    }

    function __call($method,$p){
        if($method=='display'){
            if(is_object($p[0])){
                $this->displayObject($p[0]);
            }else if(is_array($p[0])){
                $this->displayArray($p[0]);
            }else{
                $this->displayScalar($p[0]);
            }
        }
    }
}

$a = new A();
echo $a->display(array('sdfsd','sdfdsf','123'));
echo $a->display($a);
echo $a->dispaly('25');

結果:

總結:__call方法必須要有兩個引數,第一個包含了被呼叫的方法名稱,第二個引數包含了傳遞給該方法的陣列。

相關推薦

PHP魔術方法__call過載方法

<?php header("content-type:text/html;charset='utf-8'"); class A{ private $name; private $

PHP魔術方法__call與__callStatic方法

ring 魔術方法 local csdn boa -c isset sta 自動調用 [php] view plain copy <?php class human{ private function t(){ } /

魔術方法__call與__callStatic方法

sha 可見 print 方法的參數 param array csharp func 靜態 <?php class human{ private function t(){ } /** * 魔術方法__call * * @param

PHP 魔術方法__set() __get() 方法

先看看官方文件的解釋 __set() is run when writing data to inaccessible properties. __get() is utilized for reading data from inaccessible pro

Java方法--System.arraycopy方法和Arrays.copyOf()

System.arraycopy方法:如果是陣列比較大,那麼使用System.arraycopy會比較有優勢,因為其使用的是記憶體複製,省去了大量的陣列定址訪問等時間 public static native void arraycopy(Object src, int

PHP魔術方法__call

__call成員方法不存在時候自動調用的魔術方法,php不支持多態,可以通過call實現偽多態。 <?class a{function show(){echo 1;}function call($f,$args){echo "__CALL";}}$obj= new a;$obj-&g

PHP 小技巧__callStatic魔術方法使用

    使用 PHP 框架時,經常會用到 ORM 模型查詢資料庫,有沒有疑問:為啥有些 ORM 中的靜態查詢方法,不能通過函式追蹤下去呢,很有可能就是使用了 __callStatic 魔術方法的小技巧   這裡貼一個 簡單的 ORM 模型 1、先抽象一個基本操

php 魔術方法 __call

__call 魔術方法 //檔名字__call (自己隨便起名字) /** * 在物件中呼叫一個不可訪問方法時,__call() 會被呼叫。 * * 在靜態上下文中呼叫一個不可訪問方法時,__callStatic() 會被呼叫。 * * $name 引數是要呼叫的

PHP面向物件方法重寫與過載

直接程式碼:class father{ public function test(){ echo "father"; } public function tes

PHP 魔術方法

log des ons 函數 私有 func 面向對象編程 自動 pan 一、php中的魔術方法   php在面向對象編程時有一些特殊的方法,會在特定的時機自動調用,我們將這類方法稱為魔術方法。 二、常見的魔術方法及功能   1.構造函數 __construct():當類被

php魔術方法

變量名 數據庫 似的 發生 並且 wakeup fat php魔術方法 ble PHP中的魔術方法總結 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sl

php--魔術方法

克隆 amp 作用 href ted 指定 stat 實現 判斷 在 PHP 中以兩個下劃線開頭的方法,__construct(), __destruct (), __call(), __callStatic(),__get(), __set(), __isset(), _

php 魔術方法魔術常量

ted 簡單 ech auto trait space esp wak 聲明 魔術方法:PHP把類中所有以__(兩個下劃線)開頭的方法當成魔術方法,一般建議用戶不要將自定義的方法前面加上__作為前綴。魔術方法:1. __construct()類的默認構造方法,如果__con

python魔術方法裝飾器

裝飾器 描述器 三個魔術方法:__get__()__set__()__delete__()object.__get__(self,實例名,owner) #owner = 屬主 ,instance = 屬主類owner的實例object.__set__(self,實例名,value)object.

php魔術方法__tostring的應用

www. lstat color 匿名類 http ESS build convert ror 當echo一個對象的時候,會報錯誤 Object of class Person could not be converted to string 我們可以通過魔術方

PHP魔術方法大全

十六 加載 魔術 iss 類的成員 auto head UC AD 十六個魔術方法詳解如下 說明:PHP中把以兩個下劃線__開頭的方法稱為魔術方法(Magic methods),這些方法在PHP中充當了舉足輕重的作用。 魔術方法包括: __construct(),類

1.Java基礎識別符號命名法、八大基本資料型別三大引用型別、運算子以及程式分支結構、方法的定義過載遞迴

一、基礎匯入: 1.java採用Unicode編碼,16進位制編碼,支援世界上所有語言(GBK,gb2312,Unicode,UTF-8,ISO-8859-1)。 多執行緒---> c-編譯型語言 Test.java--原始檔,原始檔必須與主類名(public class Test

PHP魔術方法例項

PHP中把以兩個下劃線__開頭的方法稱為魔術方法,這些方法在PHP中充當了舉足輕重的作用。 魔術方法包括: __construct(),類的建構函式 __destruct(),類的解構函式 __call(),在物件中呼叫一個不可訪問方法時呼叫 __callStatic(),

php魔術常量;資料(變數)序列化/反序列化;魔術方法;static後期靜態繫結特性

與類有關的魔術常量: __CLASS__,:獲取其所在的類的類名。 __METHOD__:獲取其所在的方法的方法名。 class A{   function f1(){     echo __CLASS__; //輸出“A”     echo __METHOD__; //輸出“f1”

初認識java 輸出個人資訊(內含過載方法

public class Peopleinformation{ private String name; private String sex; private int age; private String post; private String tel; private S