|
- <?php
- /**
- * 框架版本号
- */
- defined('PHALAPI_VERSION') || define('PHALAPI_VERSION', '1.3.6');
-
- /**
- * 项目根目录
- */
- defined('PHALAPI_ROOT') || define('PHALAPI_ROOT', dirname(__FILE__));
-
- require_once PHALAPI_ROOT . DIRECTORY_SEPARATOR . 'PhalApi' . DIRECTORY_SEPARATOR . 'Loader.php';
-
- /**
- * PhalApi 应用类
- *
- * - 实现远程服务的响应、调用等操作
- *
- * <br>使用示例:<br>
- * ```
- * $api = new PhalApi();
- * $rs = $api->response();
- * $rs->output();
- * ```
- *
- * @package PhalApi\Response
- * @license http://www.phalapi.net/license GPL 协议
- * @link http://www.phalapi.net/
- * @author dogstar <chanzonghuang@gmail.com> 2014-12-17
- */
- class PhalApi
- {
-
- /**
- * 响应操作
- *
- * 通过工厂方法创建合适的控制器,然后调用指定的方法,最后返回格式化的数据。
- *
- * @return mixed 根据配置的或者手动设置的返回格式,将结果返回
- * 其结果包含以下元素:
- * ```
- * array(
- * 'ret' => 200, //服务器响应状态
- * 'data' => array(), //正常并成功响应后,返回给客户端的数据
- * 'msg' => '', //错误提示信息
- * );
- * ```
- */
- public function response()
- {
- $rs = DI()->response;
- $service = DI()->request->get('service', 'Default.Index');
-
- try {
- // 接口响应
- $api = PhalApi_ApiFactory::generateService();
- list($apiClassName, $action) = explode('.', $service);
- $data = call_user_func(array($api, $action));
-
- $rs->setData($data);
- } catch (PhalApi_Exception $ex) {
- // 框架或项目的异常
- $rs->setRet($ex->getCode());
- $rs->setMsg($ex->getMessage());
- } catch (Exception $ex) {
- // 不可控的异常
- DI()->logger->error($service, strval($ex));
- throw $ex;
- }
-
- return $rs;
- }
-
- }
|