Passed
Push — master ( f17217...1fc1f2 )
by Dong
08:32
created

Notify   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Importance

Changes 3
Bugs 1 Features 0
Metric Value
wmc 6
eloc 17
c 3
b 1
f 0
dl 0
loc 40
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A send() 0 5 1
A getTypes() 0 3 1
A buildConnector() 0 10 3
A name() 0 3 1
1
<?php
2
3
namespace Dongdavid\Notify;
4
5
class Notify
6
{
7
    protected static $types = [
8
        'email' => 'Email',
9
        'wechatoffical' => 'WechatOffical',
10
        'wechatwork' => 'WechatWork',
11
        'miniprogram' => 'MiniProgram',
12
        'alisms'=>'AliSms',
13
    ];
14
15
    /**
16
     * 获取可发送消息类型
17
     * @return string[]
18
     */
19
    public static function getTypes(): array
20
    {
21
        return array_keys(self::$types);
22
    }
23
    private static function buildConnector($type)
24
    {
25
        $type = strtolower($type);
26
        if ( ! isset(self::$types[$type])) {
27
            throw new \Exception('错误的通知类型:'.$type);
28
        }
29
30
        $class = false !== strpos($type, '\\') ? $type : '\\Dongdavid\\Notify\\sender\\'.self::$types[$type];
31
32
        return new $class();
33
    }
34
35
    public static function send($data)
36
    {
37
        return self::buildConnector($data['type'])
38
            ->setConfig($data['config'])
39
            ->send($data['data']);
40
    }
41
42
    public static function name($type)
43
    {
44
        return self::buildConnector($type);
45
    }
46
}
47