Switon's resource pool manager for pooling resources by owner and type, guard-based auto-return, and pool lifecycle events.
- Owner-scoped pools: each owner gets its own pool space.
- Multiple pool types: one owner can keep separate variants such as
defaultandreadonly. - Scoped borrowing:
PoolGuardreturns resources automatically when it goes out of scope. - Capacity control: pool size, timeout, and busy conditions are handled explicitly.
- Observable lifecycle: resource acquiring, returning, and busy states can be observed.
composer require switon/pooluse Switon\Core\Attribute\Autowired;
use Switon\Pooling\PoolManagerInterface;
final class DatabaseClient
{
public function query(string $sql): array
{
return [];
}
}
final class ReportService
{
#[Autowired] protected PoolManagerInterface $poolManager;
public function __construct()
{
$this->poolManager->add($this, new DatabaseClient(), 4);
}
public function load(): array
{
$db = $this->poolManager->guard($this, timeout: 1.0);
return $db->query('SELECT * FROM reports');
}
}Docs: https://docs.switon.dev/latest/pool
MIT.