Completed
Pull Request — master (#150)
by Sergey
03:09
created

Bot::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 1
1
<?php
2
3
namespace seregazhuk\PinterestBot;
4
5
use seregazhuk\PinterestBot\Api\Providers\News;
6
use seregazhuk\PinterestBot\Api\Providers\Pins;
7
use seregazhuk\PinterestBot\Api\Providers\User;
8
use seregazhuk\PinterestBot\Api\Providers\Boards;
9
use seregazhuk\PinterestBot\Api\Providers\Pinners;
10
use seregazhuk\PinterestBot\Api\Providers\Provider;
11
use seregazhuk\PinterestBot\Api\Providers\Keywords;
12
use seregazhuk\PinterestBot\Api\ProvidersContainer;
13
use seregazhuk\PinterestBot\Api\Providers\Interests;
14
use seregazhuk\PinterestBot\Api\Contracts\HttpClient;
15
use seregazhuk\PinterestBot\Api\Providers\Conversations;
16
17
/**
18
 * Class Bot.
19
 *
20
 *
21
 * @property Pins $pins 
22
 * @property News $news
23
 * @property User $user
24
 * @property Boards $boards
25
 * @property Pinners $pinners
26
 * @property Keywords $keywords
27
 * @property Interests $interests
28
 * @property Conversations $conversations
29
 *
30
 * @method HttpClient getHttpClient
31
 * @method array getLastError
32
 */
33
class Bot
34
{
35
    /**
36
     * @var ProvidersContainer
37
     */
38
    private $providersContainer;
39
40
    /**
41
     * @param ProvidersContainer $providersContainer
42
     */
43
    public function __construct(ProvidersContainer $providersContainer)
44
    {
45
        $this->providersContainer = $providersContainer;
46
    }
47
48
    /**
49
     * Magic method to access different providers.
50
     *
51
     * @param string $provider
52
     *
53
     * @return Provider
54
     */
55
    public function __get($provider)
56
    {
57
        return $this->providersContainer->getProvider($provider);
58
    }
59
60
    /**
61
     *  Magic method to proxy calls to providers container.
62
     *
63
     * @param string $method
64
     * @param array $parameters
65
     * @return mixed
66
     */
67
    public function __call($method, $parameters)
68
    {
69
        return call_user_func([$this->providersContainer, $method], $parameters);
70
    }
71
}
72