php常用関数処理の関数
3400 ワード
=========================================
func_get_arg-パラメータリストのいずれかを返します
func_get_args-関数パラメータリストを含む配列を返します.
func_num_Args-関数に渡されるパラメータの数を返します
call_user_func-最初のパラメータをコールバック関数として呼び出す
call_user_func_Array-コールバック関数を呼び出し、配列パラメータをコールバック関数のパラメータとします.
forward_static_call_array — Call a static method and pass the arguments as array
forward_static_call-静的メソッドを呼び出し、パラメータを配列として渡します.
=========================================
一、func_get_arg、func_get_arg、func_num_args
二、call_user_func、call_user_func_array
1、call_user_func
2、call_user_func_array
3、両者の違い:
1、パラメータフォーマット:
call_user_func(array('クラス名','メソッド名'),$param 1,$param 2,$param 3)
call_user_func_array('クラス名','メソッド名'),array($param 1,$param 2,$param 3))
2、運行速度:
# Operation Seconds
#Literal function(一般関数)1.218
#Variable function(変数関数)1.305
# call_user_func() 2.734
# call_user_func_array() 3.386
200万回反復した結果,変数関数と一般関数呼び出し(literal function)の速度の差は大きくなく,call_user_funcはその2倍,call_user_func_arrayはその3倍であった.
したがって、call_の使用はできるだけ避けてください.user_func_arrayは変数関数を使用する傾向があります.わずかな関数で5つ以上のパラメータがあるので、上のコードでは1~5つの関数の呼び出しを変数関数で書き、一部の関数だけをcall_user_func_array呼び出しにより、プログラムの実行速度を最大化します.実は、もしあなたのプログラムが'call_を呼び出すだけならuser_func_array'は数千回以下で、これらの違いは非常に小さく(0.002秒程度)、最適化する必要はありません.
func_get_arg-パラメータリストのいずれかを返します
func_get_args-関数パラメータリストを含む配列を返します.
func_num_Args-関数に渡されるパラメータの数を返します
call_user_func-最初のパラメータをコールバック関数として呼び出す
call_user_func_Array-コールバック関数を呼び出し、配列パラメータをコールバック関数のパラメータとします.
forward_static_call_array — Call a static method and pass the arguments as array
forward_static_call-静的メソッドを呼び出し、パラメータを配列として渡します.
=========================================
一、func_get_arg、func_get_arg、func_num_args
class test{
public function hello($a,$b,$c,$d){
$num=func_num_args();
echo " :".$num,"
";
if(2<=$num){
echo " :".func_get_arg(2)."
";
}
$num2=func_get_args();
for($i=0;$i";
}
}
}
$T=new test();
$T->hello('A','B','C','D');
// :4
// :C
// 0 A
// 1 B
// 2 C
// 3 D
二、call_user_func、call_user_func_array
1、call_user_func
namespace Foobar;
class Foo {
static public function test($param) {
echo "Hello world! ".$param;
}
public function test($param) {
echo "Hi everybody! ".$param;
}
}
//1、 , , 3
$param = 'param'
call_user_func(__NAMESPACE__ .'\Foo::test',$param);
call_user_func(array(__NAMESPACE__ .'\Foo', 'test'), $param);//
call_user_func([Foo::class, 'test'], $param);
//2、 ,
$foo = new Foo();
$param = 'param'
call_user_func(array($foo, 'test'), $param);
// :call_user_func(array($foo, 'test'), $param, $param1, $param2)
// namespace
class a {
function b($c){ echo $c; }
}
call_user_func(array("a", "b"),"111"); // :111, array("a", "b") a b
//3、
function a(&$b)
{
$b++;
}
$c = 0;
call_user_func('a', &$c);
echo $c;// 1
2、call_user_func_array
//1
function a($b, $c) {
echo $b;echo " ";echo $c;
}
call_user_func_array('a', array("111", "222"));
// 111 222
//2
Class ClassA
{
function bc($b, $c) {
$bc = $b + $c;
echo $bc;
}
}
call_user_func_array(array('ClassA','bc'), array("111", "222"));
// 333
//3
function a(&$b)
{
$b++;
}
$c = 0;
call_user_func_array('a', array(&$c));
echo $c;// 1
3、両者の違い:
1、パラメータフォーマット:
call_user_func(array('クラス名','メソッド名'),$param 1,$param 2,$param 3)
call_user_func_array('クラス名','メソッド名'),array($param 1,$param 2,$param 3))
2、運行速度:
# Operation Seconds
#Literal function(一般関数)1.218
#Variable function(変数関数)1.305
# call_user_func() 2.734
# call_user_func_array() 3.386
200万回反復した結果,変数関数と一般関数呼び出し(literal function)の速度の差は大きくなく,call_user_funcはその2倍,call_user_func_arrayはその3倍であった.
したがって、call_の使用はできるだけ避けてください.user_func_arrayは変数関数を使用する傾向があります.わずかな関数で5つ以上のパラメータがあるので、上のコードでは1~5つの関数の呼び出しを変数関数で書き、一部の関数だけをcall_user_func_array呼び出しにより、プログラムの実行速度を最大化します.実は、もしあなたのプログラムが'call_を呼び出すだけならuser_func_array'は数千回以下で、これらの違いは非常に小さく(0.002秒程度)、最適化する必要はありません.