colly_wyx
2018-05-18 50a53f7db63c5729b0ddbc93367117cf35ccf03c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
<?php
/**
 * 接口统一入口
 * @author: dogstar 2014-10-04
 */
 
/** ---------------- 根目录定义,自动加载 ---------------- **/
 
defined('API_ROOT') || define('API_ROOT', dirname(__FILE__));
 
//自动加载
require_once API_ROOT . '/../PhalApi.php';
$loader = new PhalApi_Loader(API_ROOT, array('Service'));
 
date_default_timezone_set('Asia/Shanghai');
 
PhalApi_Translator::setLanguage('zh_cn');
 
/** ---------------- 注册&初始化服务组件 ---------------- **/
 
DI()->loader = $loader;
 
DI()->config = new PhalApi_Config_File(dirname(__FILE__) . '/Config');
 
DI()->request = new PhalApi_Request();
 
DI()->logger = new PhalApi_Logger_Explorer(
        PhalApi_Logger::LOG_LEVEL_DEBUG | PhalApi_Logger::LOG_LEVEL_INFO | PhalApi_Logger::LOG_LEVEL_ERROR);
 
DI()->notorm = function() {
    $notorm = new PhalApi_DB_NotORM(DI()->config->get('dbs'), true);
    return $notorm;
};
 
DI()->cache = function() {
    //$mc = new PhalApi_Cache_Memcached(DI()->config->get('sys.mc'));
    $mc = new Memcached_Mock();
    return $mc;
};
 
class Memcached_Mock {
    public $data = array();
 
    public function __call($method, $params)
    {
        echo 'Memcached::' . $method . '() with: ', json_encode($params), " ... \n";
    }
 
    public function get($key)
    {
        echo "Memcached::get($key) ... \n";
        return isset($this->data[$key]) ? $this->data[$key] : null;
    }
 
    public function set($key, $value, $expire)
    {
        echo "Memcached::get($key, ", json_encode($value), ", $expire) ... \n";
        $this->data[$key] = $value;
    }
 
    public function delete($key)
    {
        unset($this->data[$key]);
    }
}
 
if (!class_exists('Memcached')) {
    class Memcached extends Memcached_Mock {
    }
}
 
if (!class_exists('Redis')) {
 
    class Redis {
 
        public function __call($method, $params) {
            echo 'Redis::' . $method . '() with: ', json_encode($params), " ... \n";
        }
 
    }
}
 
//加密,测试情况下为防止本地环境没有mcrypt模块 这里作了替身
DI()->crypt = function() {
    //return new Crypt_Mock();
    return new PhalApi_Crypt_MultiMcrypt(DI()->config->get('sys.crypt.mcrypt_iv'));
};
 
class Crypt_Mock implements PhalApi_Crypt
{
    public function encrypt($data, $key)
    {
        echo "Crypt_Mock::encrypt($data, $key) ... \n";
        return $data;
    }
    
    public function decrypt($data, $key)
        {
        echo "Crypt_Mock::decrypt($data, $key) ... \n";
        return $data;
    }
}
 
/** ---------------- 公共的测试替身或桩 ---------------- **/
 
class PhalApi_Response_Json_Mock extends PhalApi_Response_Json {
 
    protected function handleHeaders($headers) {
    }
}
 
class PhalApi_Response_JsonP_Mock extends PhalApi_Response_JsonP {
 
    protected function handleHeaders($headers) {
    }
}
 
class PhalApi_Api_Impl extends PhalApi_Api {
 
    public function getRules() {
        return array(
            '*' => array( 
                'version' => array('name' => 'version'),
            ),
            'add' => array(
                'left' => array('name' => 'left', 'type' => 'int'),
                'right' => array('name' => 'right', 'type' => 'int'),
            ),
        );
    }
 
    public function add()
    {
        return $this->left + $this->right;
    }
 
    public function getTime()
    {
        return time();
    }
}
 
class PhalApi_Filter_Impl implements PhalApi_Filter {
 
    public function check() {
 
    }
}
 
class PhalApi_Filter_Impl_Exception implements PhalApi_Filter {
 
    public function check() {
        throw new PhalApi_Exception_BadRequest('just for test');
    }
}
 
if (!class_exists('Yaconf', false)) {
    class Yaconf {
        public static function __callStatic($method, $params) {
            echo "Yaconf::$method()...\n";
        }
    }
}