Completed
Push — master ( 560b6d...3ed198 )
by Hong
02:47
created

LanguageLoader::getLanguage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
/**
3
 * Phossa Project
4
 *
5
 * PHP version 5.4
6
 *
7
 * @category  Library
8
 * @package   Phossa2\Shared
9
 * @copyright Copyright (c) 2016 phossa.com
10
 * @license   http://mit-license.org/ MIT License
11
 * @link      http://www.phossa.com/
12
 */
13
/*# declare(strict_types=1); */
14
15
namespace Phossa2\Shared\Message\Loader;
16
17
use Phossa2\Shared\Base\ObjectAbstract;
18
19
/**
20
 * LanguageLoader
21
 *
22
 * Load translation file `Message.LANG.php` located in the same directory of
23
 * `Message.php`
24
 *
25
 * @package Phossa2\Shared
26
 * @author  Hong Zhang <[email protected]>
27
 * @see     ObjectAbstract
28
 * @see     LoaderInterface
29
 * @version 2.0.0
30
 * @since   2.0.0 added
31
 */
32
class LanguageLoader extends ObjectAbstract implements LoaderInterface
33
{
34
    /**
35
     * language setting. Use locale codes
36
     *
37
     * @var    string
38
     * @access protected
39
     */
40
    protected $language;
41
42
    /**
43
     * constructor and set language
44
     *
45
     * @param  string $language language to use
46
     * @access public
47
     */
48
    public function __construct(/*# string */ $language = 'zh_CN')
49
    {
50
        $this->language = $language;
51
    }
52
53
    /**
54
     * Load language file from the same directory of message class.
55
     *
56
     * language file name is something like 'Message.zh_CN.php'
57
     *
58
     * {@inheritDoc}
59
     */
60
    public function loadMessages(
61
        /*# string */ $className
62
    )/*# : array */ {
63
        $map = [];
64
        if (class_exists($className)) {
65
            $class = new \ReflectionClass($className);
66
            $file  = $class->getFileName();
67
            // language file 'Message.php' -> 'Message.zh_CN.php'
68
            $nfile = substr_replace($file, '.' . $this->language . '.php', -4);
69
            if (file_exists($nfile)) {
70
                $res = include $nfile;
71
                if (is_array($res)) {
72
                    $map = $res;
73
                }
74
            }
75
        }
76
77
        return $map;
78
    }
79
80
    /**
81
     * {@inheritDoc}
82
     */
83
    public function getLanguage()/*# : string */
84
    {
85
        return $this->language;
86
    }
87
}
88