zoukankan      html  css  js  c++  java
  • __call()和__callStatic()方法

    __call()
       当对象访问不存在的方法时,__call()方法会被自动调用
    __callStatic()
       当对象访问不存在的静态方法时,__callStatic()方法会被自动调用

    这两个方法在PHP里面也叫方法的重载(overloading)
       注意区分重写(overwrite)
       通过这两个方法,同一个方法的名称的调用可以对应不同的方法实现

     1 <?php
     2 class MagicTest{
     3     //方法重载
     4     //这个方法的参数第一个就是调用的方法的名称,
     5     //第二个参数是方法调用的参数组成的数组
     6     public function __call($name,$arguments) {
     7         echo " Calling ".$name." whith parameters:".implode(", ",$arguments);
     8     }
     9 }
    10 
    11 $obj = new MagicTest();
    12 $obj->runTest("para1","para2");

    输出: Calling runTest whith parameters:para1, para2 

     MagicTest() 是不存在 runTest() 函数的,这时自动调用 __call() 函数

    1 <?php
    2 class MagicTest{
    3     public static function __callStatic($name,$arguments) {
    4         echo "Static Calling ".$name." whith parameters:".implode(", ",$arguments);
    5     }
    6 }
    7 
    8 $obj = new MagicTest();
    9 MagicTest::runTest("para1","para2");

    还有值得说的一点就是,两个函数可以同时出现

     1 <?php
     2 class MagicTest{
     3     public function __call($name,$arguments) {
     4         echo " Calling ".$name." whith parameters:".implode(", ",$arguments)."<br/>";
     5     }
     6     public static function __callStatic($name,$arguments) {
     7         echo "Static Calling ".$name." whith parameters:".implode(", ",$arguments);
     8     }
     9 }
    10 
    11 $obj = new MagicTest();
    12 $obj->runTest("para1","para2");
    13 MagicTest::runTest("para1","para2");

    输出:

    Calling runTest whith parameters:para1, para2
    Static Calling runTest whith parameters:para1, para2

    正常时候是不允许同时出现两个相同的名称的( runTest ),

    但在面向对象的魔术方法中却可以。

  • 相关阅读:
    extjs 获取Dom对象
    转: python requests的安装与简单运用
    转: python如何安装pip和easy_installer工具
    转: windows下面安装Python和pip终极教程
    JS Json数据转换
    转:永久解决火狐浏览器出现的flash版本更新问题
    python 字符编码 转换
    opencv输出图片像素值
    Mac中安装tensorflow(转)
    在linux和Mac中访问某个文件夹中所有的文件
  • 原文地址:https://www.cnblogs.com/jacson/p/4620728.html
Copyright © 2011-2022 走看看