ví dụ:Bạn có thể lưu trữ một hàm trong một mảng PHP không?
$functions = array(
'function1' => function($echo) { echo $echo; }
);
Điều này có thể? Cách thay thế tốt nhất là gì?
ví dụ:Bạn có thể lưu trữ một hàm trong một mảng PHP không?
$functions = array(
'function1' => function($echo) { echo $echo; }
);
Điều này có thể? Cách thay thế tốt nhất là gì?
Có một vài tùy chọn. Sử dụng create_function
:
$functions = array(
'function1' => create_function('$echo', 'echo $echo;')
);
Đơn giản chỉ cần lưu trữ tên của chức năng như là một chuỗi (đây là một cách hiệu quả tất cả các create_function
đang làm):
function do_echo($echo) {
echo $echo;
}
$functions = array(
'function1' => 'do_echo'
);
Nếu bạn đang sử dụng PHP 5.3 bạn có thể tận dụng anonymous functions:
$functions = array(
'function1' => function($echo) {
echo $echo;
}
);
Tất cả các phương pháp này được liệt kê trong tài liệu theo callback
pseudo-type. Cho dù bạn chọn cách nào, cách đề nghị gọi chức năng của bạn sẽ là với chức năng call_user_func
hoặc call_user_func_array
.
call_user_func($functions['function1'], 'Hello world!');
Để theo dõi bài Alex Barrett, create_function() trả về một giá trị mà bạn thực sự có thể sử dụng để gọi hàm, thusly:
$function = create_function('$echo', 'echo $echo;');
$function('hello world');
Kể từ PHP "5.3.0 chức năng Anonymous trở nên có sẵn ", ví dụ về việc sử dụng:
lưu ý rằng đây là nhanh hơn nhiều so với sử dụng cũ create_function
...
//store anonymous function in an array variable e.g. $a["my_func"]
$a = array(
"my_func" => function($param = "no parameter"){
echo "In my function. Parameter: ".$param;
}
);
//check if there is some function or method
if(is_callable($a["my_func"])) $a["my_func"]();
else echo "is not callable";
// OUTPUTS: "In my function. Parameter: no parameter"
echo "\n<br>"; //new line
if(is_callable($a["my_func"])) $a["my_func"]("Hi friend!");
else echo "is not callable";
// OUTPUTS: "In my function. Parameter: Hi friend!"
echo "\n<br>"; //new line
if(is_callable($a["somethingElse"])) $a["somethingElse"]("Something else!");
else echo "is not callable";
// OUTPUTS: "is not callable",(there is no function/method stored in $a["somethingElse"])
Tài liệu tham khảo:
Anonymous chức năng: http://cz1.php.net/manual/en/functions.anonymous.php
thử nghiệm cho callable: http://cz2.php.net/is_callable
bạn đang đến từ javascript? –
** TL; DR - kể từ PHP 5.4: ** '$ functions = ['function1' => function ($ echo) {echo $ echo; }]; ' ...... vì có sẵn 5.3 hàm ẩn danh, vì 5.4 bạn có thể viết' [] 'thay vì' mảng() ' –