1 <?php
2
3 namespace Http\Message\Authentication;
4
5 use Http\Message\Authentication;
6 use Psr\Http\Message\RequestInterface;
7
8 9 10 11 12
13 final class Chain implements Authentication
14 {
15 16 17
18 private $authenticationChain = [];
19
20 21 22
23 public function __construct(array $authenticationChain = [])
24 {
25 foreach ($authenticationChain as $authentication) {
26 if (!$authentication instanceof Authentication) {
27 throw new \InvalidArgumentException(
28 'Members of the authentication chain must be of type Http\Message\Authentication'
29 );
30 }
31 }
32
33 $this->authenticationChain = $authenticationChain;
34 }
35
36 37 38
39 public function authenticate(RequestInterface $request)
40 {
41 foreach ($this->authenticationChain as $authentication) {
42 $request = $authentication->authenticate($request);
43 }
44
45 return $request;
46 }
47 }
48