/** * 构造函数 * * 该异常产生时会自动写入core_error日志 * * @param string $message * @param int $code * @param \Exception $previous */ public function __construct($message = '', $code = 0, \Exception $previous = null) { if ($code == 500) { /** @var \Itslove\Passport\Core\LogProvider $log */ $log = Provider::get('log') and $log['core_error']->error("资源服务异常, \"{$message}\" {$code} {$this->file} {$this->line}"); } parent::__construct($message, $code, $previous); }
/** * 对调用Restful API的Client进行身份验证 * * 验证采用HTTP基本验证, 认证口令以键值对形式保存在app配置文件的api_user数组中 */ public static function auth() { /** @var \Itslove\Passport\Core\LogProvider $log */ if (!Provider::get('config')->api->authentication) { $log = Provider::get('log') and $log['api_access']->notice("认证功能被关闭, 客户端 {$_SERVER['REMOTE_ADDR']} 身份未被认证"); return; } $user = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : ''; $password = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : ''; if ($user && $password && isset(Provider::get('config')->api_user->{$user}) && Provider::get('config')->api_user->{$user} == $password) { $log = Provider::get('log') and $log['api_access']->info("身份认证成功, 客户端 {$_SERVER['REMOTE_ADDR']} 使用口令 {$user}:{$password}"); } else { header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Basic realm="passport"'); echo 'Authorization Required.'; $log = Provider::get('log') and $log['api_access']->notice("身份认证失败, 客户端 {$_SERVER['REMOTE_ADDR']} 尝试口令 {$user}:{$password}"); exit; } }
/** * 获取缓存类实例 * * @return object */ public static function getCache() { return Provider::get('cache'); }
/** * 获取缓存 * * @param string $childNamespace 子命名空间 * @param string $key 键名 * @return array|string */ public function get($childNamespace, $key) { $fullKey = $this->getFullKey($childNamespace, $key); if (false === ($result = $this->memcache->get($fullKey))) { /** @var \Itslove\Passport\Core\LogProvider $log */ $log = Provider::get('log') and $log['cache_access']->notice("缓存未命中, Memcached {$fullKey}"); } return $result; }
$app['url'] = function () { return Provider::get('url'); }; $app['view'] = function () { return Provider::get('view'); }; $app['validation'] = function () { return Provider::get('validation'); }; // 404页面 $app->notFound(function () use($app) { $app->response->setStatusCode(404, "Not Found")->sendHeaders(); echo 'Not Found'; }); //设置错误输出选项 if (Provider::get('config')->env->testing) { ini_set('display_errors', 'On'); error_reporting(E_ALL); } else { ini_set('display_errors', 'Off'); error_reporting(0); } //关闭Phalcon模型特性, notNullValidations特性会严格审查NotNull Model::setup(array('columnRenaming' => false, 'notNullValidations' => false, 'virtualForeignKeys' => false, 'phqlLiterals' => false)); // 载入路由规则 require APP_PATH . 'front_routes.php'; require APP_PATH . 'api_routes.php'; // 处理请求 defined('TEST_DEBUG') or $app->handle(); } catch (Exception $e) { echo $e->getMessage();