2017-07-13 */ use PhalApi\Config\FileConfig; use PhalApi\Logger; use PhalApi\Logger\FileLogger; use PhalApi\Database\NotORMDatabase; use Base\Common\Context; use PhalApi\Error\ApiError; // 对客户端加密的数据进行解密 if (!empty($_REQUEST['encrypt_data'])) { // 公钥加密-由客户端完成-示例 // $public_key = openssl_pkey_get_public(file_get_contents(dirname(__FILE__) . '/phalapi_pro_rsa.pub')); // openssl_public_encrypt('{"name":"phalapi pro"}', $crypted, $public_key); // $_REQUEST['encrypt_data'] = base64_encode($crypted); // K07LIy/V+cfZqfHgZpIPnmdkwlkFbTkyRXVXx2JfQrF3YFAIsFcHnC9TjGTezzyup2f0V24nYH71Uf3oXVIqz/X9wgPXW0AGAbJw4kDOIq9Jao5L0mG7t5FV/2DLzJ14qO6fvANv6e/Hy2pFBcKvHnQ8uRJ/wyAV+RpUAa21wCY6zzuo9OhS89NPZg4B4CUORR8SIuIqWTUlXHB0woFIfRiO/AKCGltc9oDkyzJFYVvgI0LwijkQUV9RoruCEx6EvmZY7OVLB5+AXwfnfFKKtCw3jucqHyclzXwCQoif8FXN1NzCNpYvwj7DbzqU/WzRgxnPgXQSyjbCDlw19BrWoQ== // 私钥解密-由服务端完成 $privateKey = file_get_contents(dirname(__FILE__) . '/phalapi_pro_rsa.pri'); if($privateKey){ openssl_private_decrypt(base64_decode($_REQUEST['encrypt_data']), $decrypted, $privateKey); $decrypted = $decrypted ? json_decode($decrypted, TRUE) : array(); if(!empty($decrypted) && is_array($decrypted)) { $_REQUEST = array_merge($_REQUEST, $decrypted); $_POST = array_merge($_POST, $decrypted); } } } /** ---------------- 基本注册 必要服务组件 ---------------- **/ $di = \PhalApi\DI(); // 配置 $di->config = new FileConfig(API_ROOT . DIRECTORY_SEPARATOR . 'config'); // 调试模式,$_GET['__debug__']可自行改名 $di->debug = !empty($_GET['__debug__']) ? true : $di->config->get('sys.debug'); // 日记纪录 $di->logger = FileLogger::create($di->config->get('sys.file_logger')); // 数据操作 - 基于NotORM $di->notorm = new NotORMDatabase($di->config->get('dbs'), $di->config->get('sys.notorm_debug')); // 连接其他数据库(或项目原有的数据库,需要时去掉注释) // $di->notorm_plus = new NotORMDatabase($di->config->get('dbs_plus'), $di->config->get('sys.notorm_debug')); // 当前上下文,通过签名验证后将会刷新此数据 $di->context = new Context(); // JSON中文输出 // $di->response = new \PhalApi\Response\JsonResponse(JSON_UNESCAPED_UNICODE); // 错误处理 $di->error = new ApiError(); /** ---------------- 第三应用 服务注册 ---------------- **/ // 加载plugins目录下的第三方应用初始化文件 foreach (glob(API_ROOT . DIRECTORY_SEPARATOR . 'plugins' . DIRECTORY_SEPARATOR . '*.php') as $pluginFile) { include_once $pluginFile; } /** ---------------- 定制注册 可选服务组件 ---------------- **/ // 签名验证服务 $di->filter = new \App\Common\Filter(); // 如果你需要使用第二套加密算法,请开启以下服务 // $di->filter = new \App\Common\SignFilter(); // 缓存 $di->cache = new \PhalApi\Cache\FileCache(array('path' => API_ROOT . '/runtime')); // 计划任务 $mq = new \PhalApi\Task\MQ\DBMQ(); $di->taskLite = new \PhalApi\Task\Lite($mq); // 支持JsonP的返回 // if (!empty($_GET['callback'])) { // $di->response = new \PhalApi\Response\JsonpResponse($_GET['callback']); // } // 生成二维码扩展,参考示例:?s=App.Examples_QrCode.Png $di->qrcode = function() { return new \PhalApi\QrCode\Lite(); }; // 拼音拓展 $di->pinyin = function() { return new \PhalApi\Pinyin\Lite(); }; // 条形码 $di->barcode = function() { return new \PhalApi\BarCode\Lite(); }; // 注册扩展的追踪器,将SQL写入日志文件 // $di->tracer = function() { // return new \App\Common\Tracer(); // };