HandleFactory::build()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 2

Importance

Changes 3
Bugs 1 Features 0
Metric Value
c 3
b 1
f 0
dl 0
loc 12
ccs 8
cts 8
cp 1
rs 9.4286
cc 2
eloc 8
nc 2
nop 1
crap 2
1
<?php
2
/**
3
 * This file is part of the bee4/transport package.
4
 * For the full copyright and license information, please view the LICENSE
5
 * file that was distributed with this source code.
6
 *
7
 * @copyright Bee4 2015
8
 * @author  Stephane HULARD <[email protected]>
9
 * @package Bee4\Transport\Handle
10
 */
11
12
namespace Bee4\Transport\Handle;
13
14
use Bee4\Transport\Message\Request\AbstractRequest;
15
16
/**
17
 * Handle factory
18
 * @package Bee4\Transport\Handle
19
 */
20
class HandleFactory
21
{
22
    /**
23
     * List of already loaded handles
24
     * @var array
25
     */
26
    private static $loaded = [];
27
28
    /**
29
     * Build the Handle instance based on the given request
30
     * @param AbstractRequest $request
31
     * @return HandleInterface
32
     */
33 11
    public static function build(AbstractRequest $request)
34
    {
35 11
        $name = get_class($request);
36 11
        if (!isset(self::$loaded[$name])) {
37 6
            self::$loaded[$name] = new CurlHandle();
38 6
        } else {
39 5
            self::$loaded[$name]->reset();
40
        }
41 11
        self::$loaded[$name]->addOptions($request->getOptions());
42
43 11
        return self::$loaded[$name];
44
    }
45
}
46