Completed
Pull Request — 5.x (#24)
by Lars
06:58
created

Swift   A

Complexity

Total Complexity 11

Size/Duplication

Total Lines 92
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 44.83%

Importance

Changes 5
Bugs 0 Features 1
Metric Value
c 5
b 0
f 1
dl 0
loc 92
ccs 13
cts 29
cp 0.4483
rs 10
wmc 11
lcom 1
cbo 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A init() 0 4 1
B autoload() 0 23 6
A registerAutoload() 0 8 2
A strtolowerWithStaticCache() 0 12 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 62
    public static function autoload($class)
50
    {
51
        // "maybe" don't interfere with other autoloaders
52 62
        if (0 !== strpos($class, 'Swift_')) {
53
            return;
54
        }
55
56 62
        $path = __DIR__ . '/' . str_replace('_', '/', $class) . '.php';
57
58 62
        if (!file_exists($path)) {
59
            return;
60
        }
61
62
        /** @noinspection PhpIncludeInspection */
63 62
        require $path;
64
65 62
        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 62
    }
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 mixed
95
     */
96 273
    public static function strtolowerWithStaticCache($string)
97
    {
98 273
        static $staticStrtolowerCache = array();
99
100 273
        if (isset($staticStrtolowerCache[$string])) {
101 266
            return $staticStrtolowerCache[$string];
102
        } else {
103 28
            $staticStrtolowerCache[$string] = strtolower($string);
104
105 28
            return $staticStrtolowerCache[$string];
106
        }
107
    }
108
}
109