PHP伪类型和伪变量

一、伪类型

PHP伪类型有三种,分别是:1,mixed混合类型。2,number数字类型。3,callback回调类型。

1,mixed混合类型:

mixed说明一个参数可以接受多种不同的类型,但并不是所有的类型。

2,number数字类型:

number参数可以接受integer整型和float浮点型。

3,callback回调类型:

例如call_user_func()函数就可接收用户自定义的函数作为一个参数,他是php的一个内置函数。callback函数不仅可以是一个函数,也可以是一个对象的方法,静态类的方法也可以。一个php函数用函数名字符串来传递,可以传递任何内置的或者用户自定义的函数,除了语言结构例如array(),echo(),empty(),eval(),exit(),isset(),list(),print(),unset()等。

如果要传入一个对象的方法,需要以数组的形式来传递,数组下标0是对象名,下标1是方法名。要是没有实例化为对象的静态类,要传递其方法,要将数组0下标指明的对象名换成该类的名称。

除了普通的用户定义的函数外,也可以使用create_function来创建一个匿名的回调函数。

示例::

 

[php] view plain copy
 
  1. <?php  
  2.   
  3.     //普通的回调函数  
  4.     function my_callback_function(){  
  5.         echo "my is callback function.";  
  6.     }  
  7.   
  8.     //回调方法  
  9.     class MyClass{  
  10.         static function myCallbackMethod(){  
  11.             echo "my is callback method.";  
  12.         }  
  13.     }  
  14.   
  15.     //num1:回调函数  
  16.     call_user_func('my_callback_function');  
  17.   
  18.     //num2:静态类的方法  
  19.     call_user_func(array('MyClass','myCallbackMethod'));  
  20.   
  21.     //num3:对象方法  
  22.     $obj = new MyClass();  
  23.     call_user_func(array($obj,'myCallbackMethod'));  
  24.   
  25.     //num4:静态类的方法(5.3.0以上)  
  26.     call_user_func('MyClass::myCallbackMethod');  
  27.   
  28.     //num5:相对静态方法调用  
  29.     class A {  
  30.         public static function who(){  
  31.             echo "A";  
  32.         }  
  33.     }  
  34.   
  35.     class B extends A {  
  36.         public static function who(){  
  37.             echo "B";  
  38.         }  
  39.     }  
  40.   
  41.     call_user_func(array('B','parent::who'));   //输出B  
  42.   
  43.     //num6:调用时传入参数  
  44.     function test($a,$b){  
  45.         echo $a;  
  46.         echo $b;  
  47.     }  
  48.   
  49.     call_user_function('test','1','2'); //输出1 2  
  50.   
  51.     //num7:调用类方法传入参数  
  52.     class a(){  
  53.         function b($c){  
  54.             echo $c;  
  55.         }  
  56.     }  
  57.   
  58.     call_user_func(array('a','b'),'1'); //输出1  
  59.   
  60.     //num8:call_user_func_array与call_user_func很相似,只不过换了一种方式传递参数,让参数结构更清晰:  
  61.     function a($b,$c){  
  62.         echo $b;  
  63.         echo $c;  
  64.     }  
  65.   
  66.     call_user_func_array('a',array('1','2'));   //输出1 2  
  67.   
  68.     //num9:用call_user_func_array调用类内部方法  
  69.     class A(){  
  70.         function a($b,$c){  
  71.             echo $b;  
  72.             echo $c;  
  73.         }  
  74.     }  
  75.       
  76.     call_user_func_array(array('A','a'),array('1','2'));    //输出1 2  
  77.   
  78.     //num10:call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:  
  79.     function a($b){  
  80.         $b++;  
  81.     }  
  82.     $c=0;  
  83.     call_user_func('a',$c); //输出1  
  84.     call_user_func('a',array($c));  //输出2  
[php] view plain copy
 
  1.   


二、伪变量

 

php中的$...为伪变量,表示等等的意思,当一个函数可以接受任意个参数时使用此变量名。

posted on 2017-08-14 14:48  好好耕耘  阅读(1794)  评论(0编辑  收藏  举报

导航