-
-
Notifications
You must be signed in to change notification settings - Fork 1
Feature Call
github-actions[bot] edited this page Jul 8, 2026
·
1 revision
call($callable, $params) вызывает любой callable (функцию, метод, invokable), автоматически разрешая его аргументы из контейнера. Туториал — Call-bind-callbacks.
CallableInvoker через рефлексию читает параметры callable: типизированные разрешает из контейнера (autowiring), а явно переданные в $params (по имени) имеют приоритет. Поддерживаются замыкания, [$obj, 'method'], 'Class::method', invokable-объекты.
$c->enableAutowiring();
$result = $c->call(
fn (Db $db, string $table) => $db->count($table),
['table' => 'orders'], // явный скалярный аргумент
); // $db — из контейнера, $table — из $params
$c->call([$controller, 'handle']); // метод контроллера с DI-аргументами- DI для функций/экшенов, а не только классов: контроллеры-инвокейблы, обработчики, консольные команды.
- Смешивание autowired-зависимостей и явных параметров (по имени).
- Работает с любым видом callable.
- Рефлексия на каждый вызов (для горячих путей — кэшируйте или инжектируйте зависимости в конструктор).
- Скалярные параметры нужно передавать явно — по типу их не разрешить.
- Использовать для action-based контроллеров и хендлеров: зависимости в аргументах метода.
- Явные скаляры (
id,table) передавать через$paramsпо имени.
- Звать
call()в тесном цикле для горячего кода — рефлексия на каждой итерации; вынесите зависимости в конструктор. - Полагаться на порядок параметров вместо передачи по имени.
| Контейнер | Аналог |
|---|---|
| PHP-DI |
call() — тот же смысл |
| Symfony | invokable-контроллеры + argument resolvers |
| Laravel |
call() контейнера |
| Pimple | нет (❌) |
| Nette |
callMethod() / autowire аргументов |
Все кроме Pimple.
См. также: Call-bind-callbacks (гайд) · After-resolving hooks.
CloudCastle DI · · PHP 8.1+ · PSR-11
GitHub · Packagist · Releases · Discussions · Сравнение
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)
- 🏗️ Архитектура
- ⚡ Быстрый старт
- 📊 Сравнение — 5 аналогов, таблица + победители
- 🧩 Возможности (детально) — каждая фича: принцип, +/−, аналоги
- 🧪 Bootstrap
- 🚀 Compiled container
- 🔗 Contextual binding
- 🤖 Autowiring
- 📄 Конфигурация
- 📖 Справочник конфигурации
- 📂 Сканирование классов
- 🌍 Глобальный реестр
- 🏷️ Теги и декораторы
- 🔗 call(), bind(), hooks
- 🔄 Прототипы, alias, lazy, lazyGhost
- 📋 Справочник API
- 🏭 Фабрики и singleton