PHPackages                             respect/parameter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [PSR &amp; Standards](/categories/psr-standards)
4. /
5. respect/parameter

ActiveLibrary[PSR &amp; Standards](/categories/psr-standards)

respect/parameter
=================

Resolves function/constructor parameters via type and name lookup

1.0.0(3mo ago)0128↓81.8%[2 PRs](https://github.com/Respect/Parameter/pulls)ISCPHPPHP ^8.5CI passing

Since Mar 22Pushed 3w ago1 watchersCompare

[ Source](https://github.com/Respect/Parameter)[ Packagist](https://packagist.org/packages/respect/parameter)[ RSS](/packages/respect-parameter/feed)WikiDiscussions main Synced 2w ago

READMEChangelog (1)Dependencies (7)Versions (10)Used By (0)

Respect\\Parameter
==================

[](#respectparameter)

Resolves function and constructor parameters from a PSR-11 container by type.

Install
-------

[](#install)

```
composer require respect/parameter
```

Usage
-----

[](#usage)

### Resolve from a container

[](#resolve-from-a-container)

For each parameter the resolver tries, in order:

1. Positional argument of matching **type**
2. Container match by **type** (non-builtin)
3. Next **positional argument**
4. **Default value**
5. `null`

```
use Respect\Parameter\Resolver;

function notify(Mailer $mailer, Logger $logger, string $to, string $subject = 'Hi') {
    // ...
}

$resolver = new Resolver($container);
$args = $resolver->resolve(new ReflectionFunction('notify'), ['bob@example.com']);
// ['mailer' => Mailer, 'logger' => Logger, 'to' => 'bob@example.com', 'subject' => 'Hi']
```

Results are keyed by parameter name, so you can spread them with named arguments:

```
notify(...$args);
```

### Resolve with named arguments

[](#resolve-with-named-arguments)

When arguments are keyed by name (e.g. from configuration):

```
$args = $resolver->resolveNamed(
    $constructor,
    ['username' => 'admin', 'password' => 'secret'],
);
// Named args take precedence, gaps filled from container by name and type
```

### Reflect any callable

[](#reflect-any-callable)

Convert any callable form into a `ReflectionFunctionAbstract`:

```
use Respect\Parameter\Resolver;

Resolver::reflectCallable(fn() => ...);                  // Closure
Resolver::reflectCallable([$obj, 'method']);             // Array callable
Resolver::reflectCallable(new Invocable());              // __invoke object
Resolver::reflectCallable('strlen');                     // Function name
Resolver::reflectCallable('DateTime::createFromFormat'); // Static method
```

### Check accepted types

[](#check-accepted-types)

```
Resolver::acceptsType($reflection, LoggerInterface::class); // true/false
```

API
---

[](#api)

MethodTypeDescription`resolve($reflection, $positional)`instanceResolve parameters from positional args + container. Returns `array` keyed by parameter name`resolveNamed($reflection, $named)`instanceResolve from named args (priority) + container. Returns `array` keyed by parameter name`reflectCallable($callable)`staticAny callable to `ReflectionFunctionAbstract``acceptsType($reflection, $type)`staticCheck if any parameter accepts a typeLicense
-------

[](#license)

ISC. See [LICENSE](LICENSE).

###  Health Score

45

—

FairBetter than 91% of packages

Maintenance90

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 70.6% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

93d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/202642?v=4)[Alexandre Gomes Gaigalas](/maintainers/alganet)[@alganet](https://github.com/alganet)

---

Top Contributors

[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (12 commits)")[![alganet](https://avatars.githubusercontent.com/u/202642?v=4)](https://github.com/alganet "alganet (5 commits)")

---

Tags

PSR-11Autowiringdependency-injectionrespectparameterresolver

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/respect-parameter/health.svg)

```
[![Health](https://phpackages.com/badges/respect-parameter/health.svg)](https://phpackages.com/packages/respect-parameter)
```

###  Alternatives

[php-di/php-di

The dependency injection container for humans

2.8k53.2M1.2k](/packages/php-di-php-di)[laminas/laminas-servicemanager

Factory-Driven Dependency Injection Container

15857.5M780](/packages/laminas-laminas-servicemanager)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
