Точнее, «вызываемый» используется в аргументах объявления функции. как тот, что ниже.
function post($pattern, callable $handler) {
$this->routes['post'][$pattern] = $handler;
return $this;
}
Как это нам выгодно?
почему и как мы это используем?
Может быть, это очень важно для вас, однако, я попытался найти его, и я не получил ответов. по крайней мере, я ничего не мог понять.
Надеемся на ответ для чайников. Я новичок в кодировании … XD
Редактировать: Вот ссылка на то, откуда я скопировал приведенный выше фрагмент кода: ссылка на сайт
callable
Тип позволяет нам передавать функцию обратного вызова вызываемой функции. То есть параметры функции обратного вызова позволяют вызываемой функции динамически вызывать код, который мы указываем в callable
параметр функции. Это полезно, потому что позволяет передавать динамический код для выполнения функции.
Например, можно хотеть вызвать функцию, и функция принимает функцию обратного вызова, называемую log
, который будет регистрировать данные в произвольном порядке, который вы хотите.
Я надеюсь, что в этом есть смысл. Подробнее см. эта ссылка.
Это подсказка типа, которая говорит нам, что эта функция принимает параметр $handler
как функция, посмотрите этот пример, чтобы прояснить ситуацию:
function helloWorld()
{
echo 'Hello World!';
}
function handle(callable $fn)
{
$fn(); // We know the parameter is callable then we execute the function.
}
handle('helloWorld'); // Outputs: Hello World!
Это очень простой пример, но я надеюсь, что он поможет вам понять идею.
Вызываемая функция (обратный вызов) — это функция, которая вызывается внутри другой функции или используется в качестве параметра другой функции.
// An example callback function
function my_callback_function() {
echo 'hello world!';
}
// Type 1: Simple callback
call_user_func('my_callback_function');
В некоторых случаях ваша функция является шаблоном для других функций, в этом случае вы используете параметры для вызываемой функции.
для дополнительной информации:
http://php.net/manual/en/language.types.callable.php
Вот пример использования подлежащий выкупу в качестве параметра.
Приведенная ниже функция wait_do_linebreak будет находиться в режиме ожидания в течение заданного времени, затем вызывать функцию с заданными параметрами привязки и затем отображать разрыв строки.
...$params
упаковывает хвостовые параметры в массив, называемый $ params. Здесь он используется для передачи аргументов в вызываемые объекты.
В конце примеров вы увидите встроенную функцию, которая принимает вызываемый параметр в качестве параметра.
<?php
function wait_do_linebreak($time, callable $something, ...$params)
{
sleep($time);
call_user_func_array($something, $params);
echo "\n";
}
function earth_greeting() {
echo 'hello earth';
}
class Echo_Two
{
public function __invoke($baz, $bat)
{
echo $baz, " ", $bat;
}
}
class Eat_Static
{
static function another()
{
echo 'Another example.';
}
}
class Foo
{
public function more()
{
echo 'And here is another one.';
}
}
wait_do_linebreak(0, 'earth_greeting');
$my_echo = function($str) {
echo $str;
};
wait_do_linebreak(0, $my_echo, 'hello');
wait_do_linebreak(0, function() {
echo "I'm on top of the world.";
});
wait_do_linebreak(0, new Echo_Two, 'The', 'Earth');
wait_do_linebreak(0, ['Eat_Static', 'another']);
wait_do_linebreak(0, [new Foo, 'more']);
$array = [
'jim',
'bones',
'spock'
];
$word_contains_o = function (string $str) {
return strpos($str, 'o') !== false;
};
print_r(array_filter($array, $word_contains_o));
Выход:
hello earth
hello
I'm on top of the world.
The Earth
Another example.
And here is another one.
Array
(
[1] => bones
[2] => spock
)
Callable — это тип данных.
примечание: вы всегда можете проверить, являются ли ваши переменные типа «вызываемыми», используя встроенную функцию is_callable, предоставляя обработчик вашей переменной в качестве аргумента.
Ключевое слово «callable», встречающееся в коде, используется для «объявления типа», также известного как «подсказка типа» в PHP 5. оно используется для указания, какой тип аргумента или параметра принимают ваши функции или методы. это можно сделать, просто поместив «подсказку типа» или «объявление типа» (то есть имя типа, как в данном случае «вызываемый») перед именами параметров.
Всякий раз, когда вы используете «подсказки типов» или «объявления типов» для объявлений функций (т. Е. Когда вы указали, какие типы разрешены / приняты), и вы вызываете их, предоставляя параметры типов данных, отличные от указанных как приемлемые, ошибка генерируется.
примечание: также, имена классов могут использоваться, если вы хотите, чтобы ваша функция требовала> объекта, созданного из определенного класса < для соответствующего параметра
—
Рекомендации:
—
Я новичок в кодировании, поэтому, пожалуйста, исправьте мои ошибки 🙂