首页 » 网站建设 » phparraycall技巧_自定义函数call_user_func和call_user_func_array详解

phparraycall技巧_自定义函数call_user_func和call_user_func_array详解

duote123 2024-12-06 0

扫一扫用手机浏览

文章目录 [+]

call_user_func函数类似于一种特殊的调用函数的方法,利用方法如下:

复制代码 代码如下:

phparraycall技巧_自定义函数call_user_func和call_user_func_array详解

```

phparraycall技巧_自定义函数call_user_func和call_user_func_array详解
(图片来自网络侵删)

function a($b,$c)

{

echo $b;

echo $c;

}

call_user_func('a', \"大众111\"大众,\"大众222\公众);

call_user_func('a', \公众333\公众,\"大众444\公众);

//显示 111 222 333 444

```

调用类内部的方法比较奇怪,居然用的是array,不知道开拓者是如何考虑的,当然省去了new,也是满有新意的:

复制代码 代码如下:

```

class a {

function b($c)

{

echo $c;

}

}

call_user_func(array(\"大众a\"大众, \"大众b\"大众),\"大众111\"大众);

//显示 111

```

call_user_func_array函数和call_user_func很相似,只不过是换了一种办法通报了参数,让参数的构造更清晰:

复制代码 代码如下:

```

function a($b, $c)

{

echo $b;

echo $c;

}

call_user_func_array('a', array(\"大众111\"大众, \"大众222\公众));

//显示 111 222

```

call_user_func_array函数也可以调用类内部的方法的

复制代码 代码如下:

```

Class ClassA

{

function bc($b, $c) {

$bc = $b + $c;

echo $bc;

}

}

call_user_func_array(array('ClassA','bc'), array(\"大众111\"大众, \"大众222\"大众));

//显示 333

```

call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能同等:

复制代码 代码如下:

```

function a(&$b)

{

$b++;

}

$c = 0;

call_user_func('a', &$c);

echo $c;//显示 1

call_user_func_array('a', array(&$c));

echo $c;//显示 2

```

```

<?php

//call_user_func() 返回值:返回回调函数的返回值.

//自定义方法,实行

function sum($a,$b){

$c = $a+$b;

echo $a;

echo $b;

echo $c;

}

call_user_func('sum','10','20');//102030

//也可以直接把回调方法写入调用 func_get_args() 获取参数的数组

call_user_func(function (){ $para = func_get_args(); foreach ($para as $v){ echo $v;} },10,20,13,30);//10201330

//类的利用

class test{

function __construct()

{

echo 'construct';

}

public static function sum($a,$b){

$c = $a+$b;

echo $a;

echo $b;

echo $c;

}

function __destruct()

{

echo 'destruct';

}

}

//个中类的方法没有static润色会报错:Strict Standards: 非静态方法的缺点

call_user_func(array('test','sum'),'30','40');//304070

call_user_func('test::sum','30','40');//304070

//call_user_func_array() 返回回调函数的结果。
如果出错的话就返回FALSE

//实现相似,只是换了一种办法通报了参数,而自己觉得 call_user_func_array() 的写入规则更加清楚

//方法

call_user_func_array('sum', array(\"大众111\"大众, \公众222\公众));//111222333

//也可以直接把回调方法写入调用

call_user_func_array(function (){ $para = func_get_args(); foreach ($para as $v){ echo $v;} },array(10,20,30,40));//10203040

//类

call_user_func_array(array('test','sum'), array(\公众111\"大众, \"大众222\公众));//111222333

call_user_func_array('test::sum', array(\公众111\"大众, \"大众222\"大众));//111222333

/

call_user_func(),call_user_func_array()利用类的方法 和 new 工具后调用方法 差异

/

//差异:该利用类的方法和直接new调用的差异,便是有没有触发布局和析构方法

//该调用了test类中的方法,但是没有调用布局方法,而new工具就会触发布局方法

$a = new test;

$a->sum(1,2);//construct123destruct

```

标签:

相关文章

phpudp报文技巧_UDP报文格式详解

字段长度描述Source Port2字节标识哪个运用程序发送(发送进程)。Destination Port2字节标识哪个运用程序吸...

网站建设 2024-12-08 阅读0 评论0