-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathContainer.php
76 lines (64 loc) · 1.77 KB
/
Container.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php declare( strict_types=1 );
namespace Your\Namespace;
use StellarWP\ContainerContract\ContainerInterface;
// If you are including lucatume\DI52 using Strauss (recommended), then:
use Your\Namespace\lucatume\DI52\Container as DI52Container;
// If you are including lucatume\DI52 directly, then you'd want to do:
// use lucatume\DI52\Container as DI52Container;
/**
* @method mixed getVar(string $key, mixed|null $default = null)
* @method void register(string $serviceProviderClass, string ...$alias)
* @method self when(string $class)
* @method self needs(string $id)
* @method void give(mixed $implementation)
*/
class Container implements ContainerInterface {
/**
* @var DI52Container
*/
protected $container;
/**
* Container constructor.
*
* @param object $container The container to use.
*/
public function __construct( $container = null ) {
$this->container = $container ?: new DI52Container();
}
/**
* @inheritDoc
*/
public function bind( string $id, $implementation = null, array $afterBuildMethods = null ) {
$this->container->bind( $id, $implementation, $afterBuildMethods );
}
/**
* @inheritDoc
*/
public function get( string $id ) {
return $this->container->get( $id );
}
/**
* @return DI52Container
*/
public function get_container() {
return $this->container;
}
/**
* @inheritDoc
*/
public function has( string $id ) {
return $this->container->has( $id );
}
/**
* @inheritDoc
*/
public function singleton( string $id, $implementation = null, array $afterBuildMethods = null ) {
$this->container->singleton( $id, $implementation, $afterBuildMethods );
}
/**
* Defer all other calls to the container object.
*/
public function __call( $name, $args ) {
return $this->container->{$name}( ...$args );
}
}