тип или псевдоним в PHP означающий обозначающий всё, что может быть вызвано как функция.
Он применяется:
- в сигнатурах функций и методов,
- в типах аргументов,
- в возвращаемых значениях,
- в PHPDoc и строгой типизации.
Какие значения считаются callable
PHP считает callable следующие конструкции:
1. Анонимная функция (Closure)
PHP
$fn = function (int $a, int $b): int {
return $a + $b;
};2. Стрелочная функция (arrow function)
PHP
$fn = fn(int $x) => $x * 2;3. Имя функции (string)
PHP
function foo() {}
$fn = 'foo';4. Статический метод класса (массив)
PHP
$fn = [MyClass::class, 'method'];5. Метод объекта (массив)
PHP
$fn = [$object, 'method'];6. Статический метод в строковом виде
PHP
$fn = 'MyClass::method';7. Объект с методом __invoke()
PHP
class Invokable {
public function __invoke(int $x): int {
return $x * 2;
}
}
$fn = new Invokable();
Использование в типах
Тип аргумента
PHP
function run(callable $callback): void {
$callback();
}Возвращаемое значение
PHP
function factory(): callable {
return fn() => 'Hello';
}Свойства и параметры конструктора (PHP 7.4+)
PHP
class Service {
public function __construct(
private callable $logger
) {}
}Проверка: is_callable()
PHP
is_callable($value); // true | false
Важно:
is_callable()может вернутьtrueдаже для строки, если функция существует в момент вызова.- Статический анализ (PHPStan, Psalm) предпочитает явную типизацию и
Closure.
