| <?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"; | 
|         } | 
|     } | 
| } |