Swift::init()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 1
dl 0
loc 4
rs 10
c 0
b 0
f 0
ccs 0
cts 3
cp 0
crap 2
1
<?php
2
3
/*
4
 * This file is part of SwiftMailer.
5
 * (c) 2004-2009 Chris Corbyn
6
 *
7
 * For the full copyright and license information, please view the LICENSE
8
 * file that was distributed with this source code.
9
 */
10
11
/**
12
 * General utility class in Swift Mailer, not to be instantiated.
13
 *
14
 *
15
 * @author Chris Corbyn
16
 */
17
abstract class Swift
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
18
{
19
    const VERSION = '5.x';
20
21
    /**
22
     * @var bool
23
     */
24
    public static $initialized = false;
25
26
    /**
27
     * @var array
28
     */
29
    public static $inits = array();
30
31
    /**
32
     * Registers an initializer callable that will be called the first time
33
     * a SwiftMailer class is autoloaded.
34
     *
35
     * This enables you to tweak the default configuration in a lazy way.
36
     *
37
     * @param mixed $callable A valid PHP callable that will be called when autoloading the first Swift class
38
     */
39
    public static function init($callable)
40
    {
41
        self::$inits[] = $callable;
42
    }
43
44
    /**
45
     * Internal autoloader for spl_autoload_register().
46
     *
47
     * @param string $class
48
     */
49 63
    public static function autoload(string $class)
50
    {
51
        // "maybe" don't interfere with other autoloaders
52 63
        if (0 !== strpos($class, 'Swift_')) {
53
            return;
54
        }
55
56 63
        $path = __DIR__ . '/' . str_replace('_', '/', $class) . '.php';
57
58 63
        if (!file_exists($path)) {
59
            return;
60
        }
61
62
        /** @noinspection PhpIncludeInspection */
63 63
        require $path;
64
65 63
        if (self::$inits && !self::$initialized) {
0 ignored issues
show
Bug Best Practice introduced by
The expression self::$inits of type array is implicitly converted to a boolean; are you sure this is intended? If so, consider using ! empty($expr) instead to make it clear that you intend to check for an array without elements.

This check marks implicit conversions of arrays to boolean values in a comparison. While in PHP an empty array is considered to be equal (but not identical) to false, this is not always apparent.

Consider making the comparison explicit by using empty(..) or ! empty(...) instead.

Loading history...
66
            self::$initialized = true;
67
            foreach (self::$inits as $init) {
68
                call_user_func($init);
69
            }
70
        }
71 63
    }
72
73
    /**
74
     * Configure autoloading using Swift Mailer.
75
     *
76
     * This is designed to play nicely with other autoloaders.
77
     *
78
     * @param mixed $callable A valid PHP callable that will be called when autoloading the first Swift class
79
     */
80
    public static function registerAutoload($callable = null)
81
    {
82
        if (null !== $callable) {
83
            self::$inits[] = $callable;
84
        }
85
86
        spl_autoload_register(array('Swift', 'autoload'));
87
    }
88
89
    /**
90
     * php-strtolower with static-cache
91
     *
92
     * @param $string
93
     *
94
     * @return string
95
     */
96 353
    public static function strtolowerWithStaticCache(string $string): string
97
    {
98 353
        static $staticStrtolowerCache = array();
99
100 353
        if (isset($staticStrtolowerCache[$string])) {
101 334
            return $staticStrtolowerCache[$string];
102
        }
103
104 48
      $staticStrtolowerCache[$string] = strtolower($string);
105
106 48
      return $staticStrtolowerCache[$string];
107
    }
108
}
109