Callback Functions #
Дуудлагын функцууд #
A callback function (often referred to as just “callback”) is a function which is passed as an argument into another function.
Дахин дуудах функц (үүнийг ихэвчлэн “дуудах” гэж нэрлэдэг) нь өөр функцэд аргумент байдлаар дамжуулагдах функц юм.
Any existing function can be used as a callback function. To use a function as a callback function, pass a string containing the name of the function as the argument of another function:
Одоо байгаа бүх функцийг буцааж дуудах функц болгон ашиглаж болно. Функцийг дуудлага хийх функц болгон ашиглахын тулд функцын нэрийг агуулсан үгсийг өөр функцын аргумент болгон дамжуулна уу.
<?php
function my_callback($item) {
return strlen($item);
}
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map("my_callback", $strings);
print_r($lengths);
?>
Starting with version 7, PHP can pass anonymous functions as callback functions:
7-р хувилбараас эхлэн PHP нь үл мэдэгдэх функцийг дуудлага хийх функцээр дамжуулж болно.
<?php
$strings = ["apple", "orange", "banana", "coconut"];
$lengths = array_map( function($item) { return strlen($item); } , $strings);
print_r($lengths);
?>
Callbacks in User Defined Functions #
Хэрэглэгчийн тодорхойлсон функц дахь дуудлага #
User-defined functions and methods can also take callback functions as arguments. To use callback functions inside a user-defined function or method, call it by adding parentheses to the variable and pass arguments as with normal functions:
Хэрэглэгчийн тодорхойлсон функц, аргууд нь дуудлага хийх функцийг аргумент болгон авч болно. Хэрэглэгчийн тодорхойлсон функц эсвэл арга дотор буцааж дуудлага хийх функцийг ашиглахын тулд хувьсагч дээр хаалт нэмж, хэвийн функцтэй адил аргумент дамжуулна уу.
<?php
function exclaim($str) {
return $str . "! ";
}
function ask($str) {
return $str . "? ";
}
function printFormatted($str, $format) {
// Calling the $format callback function
echo $format($str);
}
// Pass "exclaim" and "ask" as callback functions to printFormatted()
printFormatted("Hello world", "exclaim");
printFormatted("Hello world", "ask");
?>