"PHP call user func array()"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 7개는 보이지 않습니다)
4번째 줄: 4번째 줄:
* 파라미터 배열로 콜백함수를 호출하는 PHP 함수
* 파라미터 배열로 콜백함수를 호출하는 PHP 함수


<syntaxhighlight lang='php'>
==예시 1: 함수 호출==
<?php
<syntaxhighlight lang='php' run>
function foobar($arg, $arg2) {
function foobar($arg, $arg2) {
     echo __FUNCTION__, " got $arg and $arg2\n";
     echo __FUNCTION__, " got $arg and $arg2\n";
}
}
call_user_func_array("foobar", array("one", "two"));
 
# foobar got one and two
# foobar() 함수 호출
call_user_func_array("foobar", ['one', 'two']);
</syntaxhighlight>
 
==예시 2: 메소드 호출==
<syntaxhighlight lang='php' run>
class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}
 
# $foo->bar() 메소드 호출
$foo = new foo;
call_user_func_array([$foo, 'bar'], ['three', 'four']);
</syntaxhighlight>
 
<syntaxhighlight lang='PHP' run>
namespace Foobar;
 
class Foo {
    static public function test($name) {
        print "Hello {$name}!\n";
    }
}
 
call_user_func_array(__NAMESPACE__ .'\Foo::test', ['Hannes']);
 
call_user_func_array([__NAMESPACE__ .'\Foo', 'test'], ['Philip']);
</syntaxhighlight>
 
==예시 3: 람다 함수 사용==
<syntaxhighlight lang='php' run>
$func = function($arg1, $arg2) {
    return $arg1 * $arg2;
};
 
var_dump(call_user_func_array($func, array(2, 4)));
</syntaxhighlight>
 
==예시 4: 참조의 의한 값 전달==
<syntaxhighlight lang='php' run>
function mega(&$a){
    $a = 55;
    echo "function mega \$a=$a\n";
}
$bar = 77;
call_user_func_array('mega',[&$bar]);
echo "global \$bar=$bar\n";
</syntaxhighlight>
</syntaxhighlight>



2021년 7월 18일 (일) 14:56 기준 최신판

1 개요[ | ]

PHP call_user_func_array()
  • 파라미터 배열로 콜백함수를 호출하는 PHP 함수

2 예시 1: 함수 호출[ | ]

function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}

# foobar() 함수 호출
call_user_func_array("foobar", ['one', 'two']);

3 예시 2: 메소드 호출[ | ]

class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}

# $foo->bar() 메소드 호출
$foo = new foo;
call_user_func_array([$foo, 'bar'], ['three', 'four']);
namespace Foobar;

class Foo {
    static public function test($name) {
        print "Hello {$name}!\n";
    }
}

call_user_func_array(__NAMESPACE__ .'\Foo::test', ['Hannes']);

call_user_func_array([__NAMESPACE__ .'\Foo', 'test'], ['Philip']);

4 예시 3: 람다 함수 사용[ | ]

$func = function($arg1, $arg2) {
    return $arg1 * $arg2;
};

var_dump(call_user_func_array($func, array(2, 4)));

5 예시 4: 참조의 의한 값 전달[ | ]

function mega(&$a){
    $a = 55;
    echo "function mega \$a=$a\n";
}
$bar = 77;
call_user_func_array('mega',[&$bar]);
echo "global \$bar=$bar\n";

6 같이 보기[ | ]

7 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}