Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php函数之回调函数(三)类静态函数和对象的方法回调

php函数之回调函数(三)类静态函数和对象的方法回调

伊谢尔伦
伊谢尔伦asal
2017-05-13 11:27:203262semak imbas

php类静态函数和对象的方法回调说明

前面一些章节中都是通过全局函数( 没有在任何对象或类中定义的函数) 声明和应用的回调函数,但如果遇到回调类中的静态方法,或是对象中的普通方法,则会有所不同。面向对象技术将在本书后面的章节中做详细介绍,所以对于本节介绍的这种应用方式,可以再后面的学习和应用中有需要时,在回过头来查阅学习即可。回调的方法,如果是一个类的静态方法或对象中的一个成员方法,那又要怎么办呢?上一章节我们介绍了php函数之回调函数的call_user_func_array() 函数,可以再来回顾一下  call_user_func_array() 函数的应用。可以将第一个参数 函数名称字符串 改成 数组类型的参数。

下面通过分别申明一个类,类中在申明一个静态成员方法。使用系统函数调用类中的静态成员方法和实例对象成员方法。

其代码如下面所示:

<?php
//声明一个类demo,类中声明一个静态成员方法fun()
 class demo{
   static function fun($str1,$str2){
     echo "str1 = ".$str1;
     echo "<br>";
     echo "str2 = ".$str2;
   }
 }
//声明一个类test,类中声明一个静态成员方法fun()
 class test{
   function fun($str1,$str2){
     echo "str1 = ".$str1;
     echo "<br>";
     echo "str2 = ".$str2;
   }
 }
//使用系统函数call_user_func_array(),调用demo类中的静态成员方法fun()
call_user_func_array( array("demo","fun"), array("php.cn", "php中文网"));
echo "<br>------------------------<br>";
//使用系统函数call_user_func_array(),调用test类中的实例对象成员方法fun()
call_user_func_array( array(new test(),"fun"), array("thinkphp","php框架"))
?>

说明:所有使用  call_user_func_array() 函数实现的自定义回调函数,或者php系统中为我们提供的所有回调函数,都可以像该函数一样,在第一个参数中使用数组类型值,而且数组中必须使用两个元素:如果调用类中的成员方法,就需要在这个数组参数中指定第一个元素为类名称字符串,第二个元素则为该类中的静态方法名称字符串;如果调用对象中的成员方法名称,则这个数组中的第一个元素为对象的引用,第二个元素则是该对象中的成员名称字符串。 call_user_func_array() 函数的第二个参数使用没有变化。

回调函数的说明格式总结如下所示,其中 callback() 代表所有回调函数:

1. 回调全局函数的格式如下所示:

callback("函数名称字符串")

2. 回调类中的静态成员方法的格式如下所示:

callback(array("类名称字符串","类中静态方法名称字符串"))

3. 回调对象中的成员方法的格式如下所示:

callback(array(对象引用,"对象中方法名称字符串"))

系统为我们提供的回调函数和我们自定义的回调函数在调用方法上都是完全相同的。至此,php函数之回调函数部分就介绍完毕了。


【相关教程推荐】

1. 《php.cn独孤九贱(4)-php视频教程

2.  php编程从入门到精通全套视频教程

3.  php实战视频教程

Atas ialah kandungan terperinci php函数之回调函数(三)类静态函数和对象的方法回调. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn