Что 2 параметра делают в функции is_callable () в php?

Я новичок в PHP может кто-нибудь сказать, что последние 2 параметра делают в is_callable () функция в php?

В следующих примерах он возвращает тот же результат с правда а также ложный

Сначала с ложный

function hello(){
return "Hello";
}

$x = 'hello';
echo is_callable($x,false);

Верните истину

Теперь с правда

function hello(){
return "Hello";
}

$x = 'hello';
echo is_callable($x,true);

Возвращает истину

Для чего в основном используются последние два параметра.

is_callable (parOne, parTwo, parThree);

Я читал об этом на php.net, но не смог понять. Кто-нибудь может сказать, для чего последние два параметра используются в этой функции?

1

Решение

Когда второй аргумент true, он не проверяет, действительно ли первый аргумент называет существующую функцию, просто имеет ли он соответствующий синтаксис, который будет использоваться для вызова функции. Это означает, что это либо строка, либо массив, первый элемент которого является объектом, а второй элемент — строкой.

Например:

is_callable('hellox', false);

возвращается FALSE потому что нет hellox() функция, но:

is_callable('hellox', true);

возвращается TRUE потому что это может быть имя функции.

Но

is_callable(1.23, true);

возвращается FALSE потому что число не может быть использовано как функция.

0

Другие решения

echo '<pre>';
print_r(
["is_callable(null, true)" => [(int)is_callable(null, true), "because null can't store callable name"],
"is_callable(7,    true)"  =>  [(int)is_callable(7,    true), "because integer can't store callable name"],
"is_callable('so', true)"  => [(int)is_callable('so', true), "because callable name can be saved in string"],

"is_callable('so', false)"  => [(int)is_callable('so', false), "because such callable doesn't exists in code"],
"is_callable('is_callable', false)"  => [(int)is_callable('is_callable', false), "because such callable exists and can be executed"],
]
);
echo '</pre>';

Короче — параметр $syntax_only = true просто выполняет проверку типа — проверяет, может ли вызываемое имя МОЖЕТ быть сохранено во входной переменной. В то время как false — дополнительно проверяет, действительно ли такой вызываемый объект существует в коде и может быть выполнен.

0