App

$App = new App();

/**
 * 注册服务
 * @access public
 * @param Service|string $service 服务
 * @param bool   $force   强制重新注册
 * @return Service|null
 */
App->register($service, $force = false)


/**
 * 执行服务
 * @access public
 * @param Service $service 服务
 * @return mixed
 */
App->bootService($service)


/**
 * 获取服务
 * @param string|Service $service
 * @return Service|null
 */
App->getService($service)


/**
 * 开启应用调试模式
 * @access public
 * @param bool $debug 开启应用调试模式
 * @return $this
 */
App->debug($debug = true)


/**
 * 是否为调试模式
 * @access public
 * @return bool
 */
App->isDebug()


/**
 * 设置应用命名空间
 * @access public
 * @param string $namespace 应用命名空间
 * @return $this
 */
App->setNamespace($namespace)


/**
 * 获取应用类库命名空间
 * @access public
 * @return string
 */
App->getNamespace()


/**
 * 设置环境变量标识
 * @access public
 * @param string $name 环境标识
 * @return $this
 */
App->setEnvName($name)


/**
 * 获取框架版本
 * @access public
 * @return string
 */
App->version()


/**
 * 获取应用根目录
 * @access public
 * @return string
 */
App->getRootPath()


/**
 * 获取应用基础目录
 * @access public
 * @return string
 */
App->getBasePath()


/**
 * 获取当前应用目录
 * @access public
 * @return string
 */
App->getAppPath()


/**
 * 设置应用目录
 * @param string $path 应用目录
 */
App->setAppPath($path)


/**
 * 获取应用运行时目录
 * @access public
 * @return string
 */
App->getRuntimePath()


/**
 * 设置runtime目录
 * @param string $path 定义目录
 */
App->setRuntimePath($path)


/**
 * 获取核心框架目录
 * @access public
 * @return string
 */
App->getThinkPath()


/**
 * 获取应用配置目录
 * @access public
 * @return string
 */
App->getConfigPath()


/**
 * 获取配置后缀
 * @access public
 * @return string
 */
App->getConfigExt()


/**
 * 获取应用开启时间
 * @access public
 * @return float
 */
App->getBeginTime()


/**
 * 获取应用初始内存占用
 * @access public
 * @return integer
 */
App->getBeginMem()


/**
 * 加载环境变量定义
 * @access public
 * @param string $envName 环境标识
 * @return void
 */
App->loadEnv($envName = '')


/**
 * 初始化应用
 * @access public
 * @return $this
 */
App->initialize()


/**
 * 是否初始化过
 * @return bool
 */
App->initialized()


/**
 * 加载语言包
 * @param string $langset 语言
 * @return void
 */
App->loadLangPack($langset)


/**
 * 引导应用
 * @access public
 * @return void
 */
App->boot()


/**
 * 加载应用文件和配置
 * @access protected
 * @return void
 */
$this->load()


/**
 * 调试模式设置
 * @access protected
 * @return void
 */
$this->debugModeInit()


/**
 * 注册应用事件
 * @access protected
 * @param array $event 事件数据
 * @return void
 */
App->loadEvent($event)


/**
 * 解析应用类的类名
 * @access public
 * @param string $layer 层名 controller model ...
 * @param string $name  类名
 * @return string
 */
App->parseClass($layer, $name)


/**
 * 是否运行在命令行下
 * @return bool
 */
App->runningInConsole()


/**
 * 获取应用根目录
 * @access protected
 * @return string
 */
$this->getDefaultRootPath()


/**
 * 获取当前容器的实例(单例)
 * @access public
 * @return static
 */
App::getInstance()


/**
 * 设置当前容器的实例
 * @access public
 * @param object|Closure $instance
 * @return void
 */
App::setInstance($instance)


/**
 * 注册一个容器对象回调
 *
 * @param string|Closure $abstract
 * @param Closure|null   $callback
 * @return void
 */
App->resolving($abstract, $callback = NULL)


/**
 * 获取容器中的对象实例 不存在则创建
 * @access public
 * @param string $abstract类名或者标识
 * @param array|true $vars变量
 * @param bool   $newInstance 是否每次创建新的实例
 * @return object
 */
App::pull($abstract, $vars = [], $newInstance = false)


/**
 * 获取容器中的对象实例
 * @access public
 * @param string $abstract 类名或者标识
 * @return object
 */
App->get($abstract)


/**
 * 绑定一个类、闭包、实例、接口实现到容器
 * @access public
 * @param string|array $abstract 类标识、接口
 * @param mixed$concrete 要绑定的类、闭包或者实例
 * @return $this
 */
App->bind($abstract, $concrete = NULL)


/**
 * 根据别名获取真实类名
 * @param  string $abstract
 * @return string
 */
App->getAlias($abstract)


/**
 * 绑定一个类实例到容器
 * @access public
 * @param string $abstract 类名或者标识
 * @param object $instance 类的实例
 * @return $this
 */
App->instance($abstract, $instance)


/**
 * 判断容器中是否存在类及标识
 * @access public
 * @param string $abstract 类名或者标识
 * @return bool
 */
App->bound($abstract)


/**
 * 判断容器中是否存在类及标识
 * @access public
 * @param string $name 类名或者标识
 * @return bool
 */
App->has($name)


/**
 * 判断容器中是否存在对象实例
 * @access public
 * @param string $abstract 类名或者标识
 * @return bool
 */
App->exists($abstract)


/**
 * 创建类的实例 已经存在则直接获取
 * @access public
 * @param string $abstract类名或者标识
 * @param array  $vars变量
 * @param bool   $newInstance 是否每次创建新的实例
 * @return mixed
 */
App->make($abstract, $vars = [], $newInstance = false)


/**
 * 删除容器中的对象实例
 * @access public
 * @param string $name 类名或者标识
 * @return void
 */
App->delete($name)


/**
 * 执行函数或者闭包方法 支持参数调用
 * @access public
 * @param string|Closure $function 函数或者闭包
 * @param array  $vars 参数
 * @return mixed
 */
App->invokeFunction($function, $vars = [])


/**
 * 调用反射执行类的方法 支持参数绑定
 * @access public
 * @param mixed $method 方法
 * @param array $vars   参数
 * @param bool  $accessible 设置是否可访问
 * @return mixed
 */
App->invokeMethod($method, $vars = [], $accessible = false)


/**
 * 调用反射执行类的方法 支持参数绑定
 * @access public
 * @param object $instance 对象实例
 * @param mixed  $reflect  反射类
 * @param array  $vars 参数
 * @return mixed
 */
App->invokeReflectMethod($instance, $reflect, $vars = [])


/**
 * 调用反射执行callable 支持参数绑定
 * @access public
 * @param mixed $callable
 * @param array $vars   参数
 * @param bool  $accessible 设置是否可访问
 * @return mixed
 */
App->invoke($callable, $vars = [], $accessible = false)


/**
 * 调用反射执行类的实例化 支持依赖注入
 * @access public
 * @param string $class 类名
 * @param array  $vars  参数
 * @return mixed
 */
App->invokeClass($class, $vars = [])


/**
 * 执行invokeClass回调
 * @access protected
 * @param string $class  对象类名
 * @param object $object 容器对象实例
 * @return void
 */
$this->invokeAfter($class, $object)


/**
 * 绑定参数
 * @access protected
 * @param ReflectionFunctionAbstract $reflect 反射类
 * @param array  $vars参数
 * @return array
 */
$this->bindParams($reflect, $vars = [])


/**
 * 创建工厂对象实例
 * @param string $name  工厂类名
 * @param string $namespace 默认命名空间
 * @param array  $args
 * @return mixed
 * @deprecated
 * @access public
 */
App::factory($name, $namespace = '', $args)


/**
 * 获取对象类型的参数值
 * @access protected
 * @param string $className 类名
 * @param array  $vars  参数
 * @return mixed
 */
$this->getObjectParam($className, &$vars)



App->__set($name, $value)



App->__get($name)



App->__isset($name)



App->__unset($name)



App->offsetExists($key)



App->offsetGet($key)



App->offsetSet($key, $value)



App->offsetUnset($key)



App->count()



App->getIterator()

Cache

$Cache = new Cache();

/**
 * 默认驱动
 * @return string|null
 */
Cache->getDefaultDriver()


/**
 * 获取缓存配置
 * @access public
 * @param null|string $name名称
 * @param mixed   $default 默认值
 * @return mixed
 */
Cache->getConfig($name = NULL, $default = NULL)


/**
 * 获取驱动配置
 * @param string $store
 * @param string $name
 * @param null   $default
 * @return array
 */
Cache->getStoreConfig($store, $name = NULL, $default = NULL)



$this->resolveType($name)



$this->resolveConfig($name)


/**
 * 连接或者切换缓存
 * @access public
 * @param string $name 连接配置名
 * @return Driver
 */
Cache->store($name = NULL)


/**
 * 清空缓冲池
 * @access public
 * @return bool
 */
Cache->clear()


/**
 * 读取缓存
 * @access public
 * @param string $key 缓存变量名
 * @param mixed  $default 默认值
 * @return mixed
 */
Cache->get($key, $default = NULL)


/**
 * 写入缓存
 * @access public
 * @param string$key   缓存变量名
 * @param mixed $value 存储数据
 * @param int|\DateTime $ttl   有效时间 0为永久
 * @return bool
 */
Cache->set($key, $value, $ttl = NULL)


/**
 * 删除缓存
 * @access public
 * @param string $key 缓存变量名
 * @return bool
 */
Cache->delete($key)


/**
 * 读取缓存
 * @access public
 * @param iterable $keys缓存变量名
 * @param mixed$default 默认值
 * @return iterable
 * @throws InvalidArgumentException
 */
Cache->getMultiple($keys, $default = NULL)


/**
 * 写入缓存
 * @access public
 * @param iterable   $values 缓存数据
 * @param null|int|\DateInterval $ttl有效时间 0为永久
 * @return bool
 */
Cache->setMultiple($values, $ttl = NULL)


/**
 * 删除缓存
 * @access public
 * @param iterable $keys 缓存变量名
 * @return bool
 * @throws InvalidArgumentException
 */
Cache->deleteMultiple($keys)


/**
 * 判断缓存是否存在
 * @access public
 * @param string $key 缓存变量名
 * @return bool
 */
Cache->has($key)


/**
 * 缓存标签
 * @access public
 * @param string|array $name 标签名
 * @return TagSet
 */
Cache->tag($name)


/**
 * 获取驱动实例
 * @param null|string $name
 * @return mixed
 */
$this->driver($name = NULL)


/**
 * 获取驱动实例
 * @param string $name
 * @return mixed
 */
$this->getDriver($name)


/**
 * 获取驱动类
 * @param string $type
 * @return string
 */
$this->resolveClass($type)


/**
 * 获取驱动参数
 * @param $name
 * @return array
 */
$this->resolveParams($name)


/**
 * 创建驱动
 *
 * @param string $name
 * @return mixed
 *
 */
$this->createDriver($name)


/**
 * 移除一个驱动实例
 *
 * @param array|string|null $name
 * @return $this
 */
Cache->forgetDriver($name = NULL)


/**
 * 动态调用
 * @param string $method
 * @param array  $parameters
 * @return mixed
 */
Cache->__call($method, $parameters)

Config

$Config = new Config();


Config::__make($app)


/**
 * 加载配置文件(多种格式)
 * @access public
 * @param  string $file 配置文件名
 * @param  string $name 一级配置名
 * @return array
 */
Config->load($file, $name = '')


/**
 * 解析配置文件
 * @access public
 * @param  string $file 配置文件名
 * @param  string $name 一级配置名
 * @return array
 */
$this->parse($file, $name)


/**
 * 检测配置是否存在
 * @access public
 * @param  string $name 配置参数名(支持多级配置 .号分割)
 * @return bool
 */
Config->has($name)


/**
 * 获取一级配置
 * @access protected
 * @param  string $name 一级配置名
 * @return array
 */
$this->pull($name)


/**
 * 获取配置参数 为空则获取所有配置
 * @access public
 * @param  string $name配置参数名(支持多级配置 .号分割)
 * @param  mixed  $default 默认值
 * @return mixed
 */
Config->get($name = NULL, $default = NULL)


/**
 * 设置配置参数 name为数组则为批量设置
 * @access public
 * @param  array  $config 配置参数
 * @param  string $name 配置名
 * @return array
 */
Config->set($config, $name = NULL)

Console

$Console = new Console();

/**
 * 初始化
 */
$this->initialize()


/**
 * 构造request
 */
$this->makeRequest()


/**
 * 添加初始化器
 * @param Closure $callback
 */
Console::starting($callback)


/**
 * 清空启动器
 */
Console::flushStartCallbacks()


/**
 * 设置执行用户
 * @param $user
 */
Console::setUser($user)


/**
 * 启动
 */
$this->start()


/**
 * 加载指令
 * @access protected
 */
$this->loadCommands()


/**
 * @access public
 * @param string $command
 * @param array $parameters
 * @param string $driver
 * @return Output|Buffer
 */
Console->call($command, $parameters = [], $driver = 'buffer')


/**
 * 执行当前的指令
 * @access public
 * @return int
 * @throws \Exception
 * @api
 */
Console->run()


/**
 * 执行指令
 * @access public
 * @param Input $input
 * @param Output $output
 * @return int
 */
Console->doRun($input, $output)


/**
 * 设置输入参数定义
 * @access public
 * @param InputDefinition $definition
 */
Console->setDefinition($definition)


/**
 * 获取输入参数定义
 * @access public
 * @return InputDefinition The InputDefinition instance
 */
Console->getDefinition()


/**
 * Gets the help message.
 * @access public
 * @return string A help message.
 */
Console->getHelp()


/**
 * 是否捕获异常
 * @access public
 * @param bool $boolean
 * @api
 */
Console->setCatchExceptions($boolean)


/**
 * 是否自动退出
 * @access public
 * @param bool $boolean
 * @api
 */
Console->setAutoExit($boolean)


/**
 * 获取完整的版本号
 * @access public
 * @return string
 */
Console->getLongVersion()


/**
 * 添加指令集
 * @access public
 * @param array $commands
 */
Console->addCommands($commands)


/**
 * 添加一个指令
 * @access public
 * @param string|Command $command 指令对象或者指令类名
 * @param string $name 指令名 留空则自动获取
 * @return Command|void
 */
Console->addCommand($command, $name = '')


/**
 * 获取指令
 * @access public
 * @param string $name 指令名称
 * @return Command
 * @throws InvalidArgumentException
 */
Console->getCommand($name)


/**
 * 某个指令是否存在
 * @access public
 * @param string $name 指令名称
 * @return bool
 */
Console->hasCommand($name)


/**
 * 获取所有的命名空间
 * @access public
 * @return array
 */
Console->getNamespaces()


/**
 * 查找注册命名空间中的名称或缩写。
 * @access public
 * @param string $namespace
 * @return string
 * @throws InvalidArgumentException
 */
Console->findNamespace($namespace)


/**
 * 查找指令
 * @access public
 * @param string $name 名称或者别名
 * @return Command
 * @throws InvalidArgumentException
 */
Console->find($name)


/**
 * 获取所有的指令
 * @access public
 * @param string $namespace 命名空间
 * @return Command[]
 * @api
 */
Console->all($namespace = NULL)


/**
 * 配置基于用户的参数和选项的输入和输出实例。
 * @access protected
 * @param Input $input 输入实例
 * @param Output $output 输出实例
 */
$this->configureIO($input, $output)


/**
 * 执行指令
 * @access protected
 * @param Command $command 指令实例
 * @param Input $input 输入实例
 * @param Output $output 输出实例
 * @return int
 * @throws \Exception
 */
$this->doRunCommand($command, $input, $output)


/**
 * 获取指令的基础名称
 * @access protected
 * @param Input $input
 * @return string
 */
$this->getCommandName($input)


/**
 * 获取默认输入定义
 * @access protected
 * @return InputDefinition
 */
$this->getDefaultInputDefinition()


/**
 * 获取可能的建议
 * @access private
 * @param array $abbrevs
 * @return string
 */
$this->getAbbreviationSuggestions($abbrevs)


/**
 * 返回命名空间部分
 * @access public
 * @param string $name 指令
 * @param int $limit 部分的命名空间的最大数量
 * @return string
 */
Console->extractNamespace($name, $limit = 0)


/**
 * 查找可替代的建议
 * @access private
 * @param string $name
 * @param array|\Traversable $collection
 * @return array
 */
$this->findAlternatives($name, $collection)


/**
 * 返回所有的命名空间
 * @access private
 * @param string $name
 * @return array
 */
$this->extractAllNamespaces($name)

Container

$Container = new Container();

/**
 * 获取当前容器的实例(单例)
 * @access public
 * @return static
 */
Container::getInstance()


/**
 * 设置当前容器的实例
 * @access public
 * @param object|Closure $instance
 * @return void
 */
Container::setInstance($instance)


/**
 * 注册一个容器对象回调
 *
 * @param string|Closure $abstract
 * @param Closure|null   $callback
 * @return void
 */
Container->resolving($abstract, $callback = NULL)


/**
 * 获取容器中的对象实例 不存在则创建
 * @access public
 * @param string $abstract类名或者标识
 * @param array|true $vars变量
 * @param bool   $newInstance 是否每次创建新的实例
 * @return object
 */
Container::pull($abstract, $vars = [], $newInstance = false)


/**
 * 获取容器中的对象实例
 * @access public
 * @param string $abstract 类名或者标识
 * @return object
 */
Container->get($abstract)


/**
 * 绑定一个类、闭包、实例、接口实现到容器
 * @access public
 * @param string|array $abstract 类标识、接口
 * @param mixed$concrete 要绑定的类、闭包或者实例
 * @return $this
 */
Container->bind($abstract, $concrete = NULL)


/**
 * 根据别名获取真实类名
 * @param  string $abstract
 * @return string
 */
Container->getAlias($abstract)


/**
 * 绑定一个类实例到容器
 * @access public
 * @param string $abstract 类名或者标识
 * @param object $instance 类的实例
 * @return $this
 */
Container->instance($abstract, $instance)


/**
 * 判断容器中是否存在类及标识
 * @access public
 * @param string $abstract 类名或者标识
 * @return bool
 */
Container->bound($abstract)


/**
 * 判断容器中是否存在类及标识
 * @access public
 * @param string $name 类名或者标识
 * @return bool
 */
Container->has($name)


/**
 * 判断容器中是否存在对象实例
 * @access public
 * @param string $abstract 类名或者标识
 * @return bool
 */
Container->exists($abstract)


/**
 * 创建类的实例 已经存在则直接获取
 * @access public
 * @param string $abstract类名或者标识
 * @param array  $vars变量
 * @param bool   $newInstance 是否每次创建新的实例
 * @return mixed
 */
Container->make($abstract, $vars = [], $newInstance = false)


/**
 * 删除容器中的对象实例
 * @access public
 * @param string $name 类名或者标识
 * @return void
 */
Container->delete($name)


/**
 * 执行函数或者闭包方法 支持参数调用
 * @access public
 * @param string|Closure $function 函数或者闭包
 * @param array  $vars 参数
 * @return mixed
 */
Container->invokeFunction($function, $vars = [])


/**
 * 调用反射执行类的方法 支持参数绑定
 * @access public
 * @param mixed $method 方法
 * @param array $vars   参数
 * @param bool  $accessible 设置是否可访问
 * @return mixed
 */
Container->invokeMethod($method, $vars = [], $accessible = false)


/**
 * 调用反射执行类的方法 支持参数绑定
 * @access public
 * @param object $instance 对象实例
 * @param mixed  $reflect  反射类
 * @param array  $vars 参数
 * @return mixed
 */
Container->invokeReflectMethod($instance, $reflect, $vars = [])


/**
 * 调用反射执行callable 支持参数绑定
 * @access public
 * @param mixed $callable
 * @param array $vars   参数
 * @param bool  $accessible 设置是否可访问
 * @return mixed
 */
Container->invoke($callable, $vars = [], $accessible = false)


/**
 * 调用反射执行类的实例化 支持依赖注入
 * @access public
 * @param string $class 类名
 * @param array  $vars  参数
 * @return mixed
 */
Container->invokeClass($class, $vars = [])


/**
 * 执行invokeClass回调
 * @access protected
 * @param string $class  对象类名
 * @param object $object 容器对象实例
 * @return void
 */
$this->invokeAfter($class, $object)


/**
 * 绑定参数
 * @access protected
 * @param ReflectionFunctionAbstract $reflect 反射类
 * @param array  $vars参数
 * @return array
 */
$this->bindParams($reflect, $vars = [])


/**
 * 创建工厂对象实例
 * @param string $name  工厂类名
 * @param string $namespace 默认命名空间
 * @param array  $args
 * @return mixed
 * @deprecated
 * @access public
 */
Container::factory($name, $namespace = '', $args)


/**
 * 获取对象类型的参数值
 * @access protected
 * @param string $className 类名
 * @param array  $vars  参数
 * @return mixed
 */
$this->getObjectParam($className, &$vars)



Container->__set($name, $value)



Container->__get($name)



Container->__isset($name)



Container->__unset($name)



Container->offsetExists($key)



Container->offsetGet($key)



Container->offsetSet($key, $value)



Container->offsetUnset($key)



Container->count()



Container->getIterator()

Cookie

$Cookie = new Cookie();


Cookie::__make($request, $config)


/**
 * 获取cookie
 * @access public
 * @param  mixed  $name 数据名称
 * @param  string $default 默认值
 * @return mixed
 */
Cookie->get($name = '', $default = NULL)


/**
 * 是否存在Cookie参数
 * @access public
 * @param  string $name 变量名
 * @return bool
 */
Cookie->has($name)


/**
 * Cookie 设置
 *
 * @access public
 * @param  string $name  cookie名称
 * @param  string $value cookie值
 * @param  mixed  $option 可选参数
 * @return void
 */
Cookie->set($name, $value, $option = NULL)


/**
 * Cookie 保存
 *
 * @access public
 * @param  string $name  cookie名称
 * @param  string $value cookie值
 * @param  int$expire 有效期
 * @param  array  $option 可选参数
 * @return void
 */
$this->setCookie($name, $value, $expire, $option = [])


/**
 * 永久保存Cookie数据
 * @access public
 * @param  string $name  cookie名称
 * @param  string $value cookie值
 * @param  mixed  $option 可选参数 可能会是 null|integer|string
 * @return void
 */
Cookie->forever($name, $value = '', $option = NULL)


/**
 * Cookie删除
 * @access public
 * @param  string $name cookie名称
 * @return void
 */
Cookie->delete($name)


/**
 * 获取cookie保存数据
 * @access public
 * @return array
 */
Cookie->getCookie()


/**
 * 保存Cookie
 * @access public
 * @return void
 */
Cookie->save()


/**
 * 保存Cookie
 * @access public
 * @param  string $name cookie名称
 * @param  string $value cookie值
 * @param  int$expire cookie过期时间
 * @param  string $path 有效的服务器路径
 * @param  string $domain 有效域名/子域名
 * @param  bool   $secure 是否仅仅通过HTTPS
 * @param  bool   $httponly 仅可通过HTTP访问
 * @param  string $samesite 防止CSRF攻击和用户追踪
 * @return void
 */
$this->saveCookie($name, $value, $expire, $path, $domain, $secure, $httponly, $samesite)

Db

$Db = new Db();

/**
 * @param Event  $event
 * @param Config $config
 * @param Log$log
 * @param Cache  $cache
 * @return Db
 * @codeCoverageIgnore
 */
Db::__make($event, $config, $log, $cache)


/**
 * 注入模型对象
 * @access public
 * @return void
 */
$this->modelMaker()


/**
 * 设置配置对象
 * @access public
 * @param Config $config 配置对象
 * @return void
 */
Db->setConfig($config)


/**
 * 获取配置参数
 * @access public
 * @param string $name配置参数
 * @param mixed  $default 默认值
 * @return mixed
 */
Db->getConfig($name = '', $default = NULL)


/**
 * 设置Event对象
 * @param Event $event
 */
Db->setEvent($event)


/**
 * 注册回调方法
 * @access public
 * @param string   $event事件名
 * @param callable $callback 回调方法
 * @return void
 */
Db->event($event, $callback)


/**
 * 触发事件
 * @access public
 * @param string $event  事件名
 * @param mixed  $params 传入参数
 * @param bool   $once
 * @return mixed
 */
Db->trigger($event, $params = NULL, $once = false)


/**
 * 监听SQL
 * @access protected
 * @return void
 */
Db->triggerSql()


/**
 * 设置缓存对象
 * @access public
 * @param CacheInterface $cache 缓存对象
 * @return void
 */
Db->setCache($cache)


/**
 * 设置日志对象
 * @access public
 * @param LoggerInterface $log 日志对象
 * @return void
 */
Db->setLog($log)


/**
 * 记录SQL日志
 * @access protected
 * @param string $log  SQL日志信息
 * @param string $type 日志类型
 * @return void
 */
Db->log($log, $type = 'sql')


/**
 * 获得查询日志(没有设置日志对象使用)
 * @access public
 * @param bool $clear 是否清空
 * @return array
 */
Db->getDbLog($clear = false)


/**
 * 创建/切换数据库连接查询
 * @access public
 * @param string|null $name  连接配置标识
 * @param bool$force 强制重新连接
 * @return ConnectionInterface
 */
Db->connect($name = NULL, $force = false)


/**
 * 创建数据库连接实例
 * @access protected
 * @param string|null $name  连接标识
 * @param bool$force 强制重新连接
 * @return ConnectionInterface
 */
$this->instance($name = NULL, $force = false)


/**
 * 获取连接配置
 * @param string $name
 * @return array
 */
$this->getConnectionConfig($name)


/**
 * 创建连接
 * @param $name
 * @return ConnectionInterface
 */
$this->createConnection($name)


/**
 * 使用表达式设置数据
 * @access public
 * @param string $value 表达式
 * @return Raw
 */
Db->raw($value)


/**
 * 更新查询次数
 * @access public
 * @return void
 */
Db->updateQueryTimes()


/**
 * 重置查询次数
 * @access public
 * @return void
 */
Db->clearQueryTimes()


/**
 * 获得查询次数
 * @access public
 * @return integer
 */
Db->getQueryTimes()


/**
 * 监听SQL执行
 * @access public
 * @param callable $callback 回调方法
 * @return void
 */
Db->listen($callback)


/**
 * 获取监听SQL执行
 * @access public
 * @return array
 */
Db->getListen()



Db->__call($method, $args)

Env

$Env = new Env();

/**
 * 读取环境变量定义文件
 * @access public
 * @param string $file 环境变量定义文件
 * @return void
 */
Env->load($file)


/**
 * 获取环境变量值
 * @access public
 * @param string $name环境变量名
 * @param mixed  $default 默认值
 * @return mixed
 */
Env->get($name = NULL, $default = NULL)



$this->getEnv($name, $default = NULL)


/**
 * 设置环境变量值
 * @access public
 * @param string|array $env   环境变量
 * @param mixed$value 值
 * @return void
 */
Env->set($env, $value = NULL)


/**
 * 检测是否存在环境变量
 * @access public
 * @param string $name 参数名
 * @return bool
 */
Env->has($name)


/**
 * 设置环境变量
 * @access public
 * @param string $name  参数名
 * @param mixed  $value 值
 */
Env->__set($name, $value)


/**
 * 获取环境变量
 * @access public
 * @param string $name 参数名
 * @return mixed
 */
Env->__get($name)


/**
 * 检测是否存在环境变量
 * @access public
 * @param string $name 参数名
 * @return bool
 */
Env->__isset($name)



Env->offsetSet($name, $value)



Env->offsetExists($name)



Env->offsetUnset($name)



Env->offsetGet($name)

Event

$Event = new Event();

/**
 * 批量注册事件监听
 * @access public
 * @param array $events 事件定义
 * @return $this
 */
Event->listenEvents($events)


/**
 * 注册事件监听
 * @access public
 * @param string $event事件名称
 * @param mixed  $listener 监听操作(或者类名)
 * @param bool   $first是否优先执行
 * @return $this
 */
Event->listen($event, $listener, $first = false)


/**
 * 是否存在事件监听
 * @access public
 * @param string $event 事件名称
 * @return bool
 */
Event->hasListener($event)


/**
 * 移除事件监听
 * @access public
 * @param string $event 事件名称
 * @return void
 */
Event->remove($event)


/**
 * 指定事件别名标识 便于调用
 * @access public
 * @param array $events 事件别名
 * @return $this
 */
Event->bind($events)


/**
 * 注册事件订阅者
 * @access public
 * @param mixed $subscriber 订阅者
 * @return $this
 */
Event->subscribe($subscriber)


/**
 * 自动注册事件观察者
 * @access public
 * @param string|object $observer 观察者
 * @param null|string   $prefix   事件名前缀
 * @return $this
 */
Event->observe($observer, $prefix = '')


/**
 * 触发事件
 * @access public
 * @param string|object $event  事件名称
 * @param mixed $params 传入参数
 * @param bool  $once   只获取一个有效返回值
 * @return mixed
 */
Event->trigger($event, $params = NULL, $once = false)


/**
 * 触发事件(只获取一个有效返回值)
 * @param  $event
 * @param null $params
 * @return mixed
 */
Event->until($event, $params = NULL)


/**
 * 执行事件调度
 * @access protected
 * @param mixed $event  事件方法
 * @param mixed $params 参数
 * @return mixed
 */
$this->dispatch($event, $params = NULL)

Exception

$Exception = new Exception();

/**
 * 设置异常额外的Debug数据
 * 数据将会显示为下面的格式
 *
 * Exception Data
 * --------------------------------------------------
 * Label 1
 *   key1  value1
 *   key2  value2
 * Label 2
 *   key1  value1
 *   key2  value2
 *
 * @access protected
 * @param  string $label 数据分类,用于异常页面显示
 * @param  array  $data  需要显示的数据,必须为关联数组
 */
$this->setData($label, $data)


/**
 * 获取异常额外Debug数据
 * 主要用于输出到异常页面便于调试
 * @access public
 * @return array 由setData设置的Debug数据
 */
Exception->getData()



$this->__clone()



Exception->__wakeup()



Exception->getMessage()



Exception->getCode()



Exception->getFile()



Exception->getLine()



Exception->getTrace()



Exception->getPrevious()



Exception->getTraceAsString()



Exception->__toString()

Facade

/**
 * 创建Facade实例
 * @static
 * @access protected
 * @param  string $class   类名或标识
 * @param  array  $args变量
 * @param  bool   $newInstance 是否每次创建新的实例
 * @return object
 */
self::createFacade($class = '', $args = [], $newInstance = false)


/**
 * 获取当前Facade对应类名
 * @access protected
 * @return string
 */
self::getFacadeClass()


/**
 * 带参数实例化当前Facade类
 * @access public
 * @return object
 */
Facade::instance($args)


/**
 * 调用类的实例
 * @access public
 * @param  string $class   类名或者标识
 * @param  array|true $args变量
 * @param  bool   $newInstance 是否每次创建新的实例
 * @return object
 */
Facade::make($class, $args = [], $newInstance = false)



Facade::__callStatic($method, $params)

File

$File = new File();

/**
 * 获取文件的哈希散列值
 * @access public
 * @param string $type
 * @return string
 */
File->hash($type = 'sha1')


/**
 * 获取文件的MD5值
 * @access public
 * @return string
 */
File->md5()


/**
 * 获取文件的SHA1值
 * @access public
 * @return string
 */
File->sha1()


/**
 * 获取文件类型信息
 * @access public
 * @return string
 */
File->getMime()


/**
 * 移动文件
 * @access public
 * @param string  $directory 保存路径
 * @param string|null $name  保存的文件名
 * @return File
 */
File->move($directory, $name = NULL)


/**
 * 实例化一个新文件
 * @param string  $directory
 * @param null|string $name
 * @return File
 */
$this->getTargetFile($directory, $name = NULL)


/**
 * 获取文件名
 * @param string $name
 * @return string
 */
$this->getName($name)


/**
 * 文件扩展名
 * @return string
 */
File->extension()


/**
 * 自动生成文件名
 * @access public
 * @param string|\Closure $rule
 * @return string
 */
File->hashName($rule = '')



File->getPath()



File->getFilename()



File->getExtension()



File->getBasename($suffix)



File->getPathname()



File->getPerms()



File->getInode()



File->getSize()



File->getOwner()



File->getGroup()



File->getATime()



File->getMTime()



File->getCTime()



File->getType()



File->isWritable()



File->isReadable()



File->isExecutable()



File->isFile()



File->isDir()



File->isLink()



File->getLinkTarget()



File->getRealPath()



File->getFileInfo($class_name)



File->getPathInfo($class_name)



File->openFile($open_mode, $use_include_path, $context)



File->setFileClass($class_name)



File->setInfoClass($class_name)



File->__debugInfo()



File->_bad_state_ex()



File->__toString()

Filesystem

$Filesystem = new Filesystem();

/**
 * @param null|string $name
 * @return Driver
 */
Filesystem->disk($name = NULL)



$this->resolveType($name)



$this->resolveConfig($name)


/**
 * 获取缓存配置
 * @access public
 * @param null|string $name名称
 * @param mixed   $default 默认值
 * @return mixed
 */
Filesystem->getConfig($name = NULL, $default = NULL)


/**
 * 获取磁盘配置
 * @param string $disk
 * @param null   $name
 * @param null   $default
 * @return array
 */
Filesystem->getDiskConfig($disk, $name = NULL, $default = NULL)


/**
 * 默认驱动
 * @return string|null
 */
Filesystem->getDefaultDriver()


/**
 * 获取驱动实例
 * @param null|string $name
 * @return mixed
 */
$this->driver($name = NULL)


/**
 * 获取驱动实例
 * @param string $name
 * @return mixed
 */
$this->getDriver($name)


/**
 * 获取驱动类
 * @param string $type
 * @return string
 */
$this->resolveClass($type)


/**
 * 获取驱动参数
 * @param $name
 * @return array
 */
$this->resolveParams($name)


/**
 * 创建驱动
 *
 * @param string $name
 * @return mixed
 *
 */
$this->createDriver($name)


/**
 * 移除一个驱动实例
 *
 * @param array|string|null $name
 * @return $this
 */
Filesystem->forgetDriver($name = NULL)


/**
 * 动态调用
 * @param string $method
 * @param array  $parameters
 * @return mixed
 */
Filesystem->__call($method, $parameters)

Http

$Http = new Http();

/**
 * 设置应用名称
 * @access public
 * @param string $name 应用名称
 * @return $this
 */
Http->name($name)


/**
 * 获取应用名称
 * @access public
 * @return string
 */
Http->getName()


/**
 * 设置应用目录
 * @access public
 * @param string $path 应用目录
 * @return $this
 */
Http->path($path)


/**
 * 获取应用路径
 * @access public
 * @return string
 */
Http->getPath()


/**
 * 获取路由目录
 * @access public
 * @return string
 */
Http->getRoutePath()


/**
 * 设置路由目录
 * @access public
 * @param string $path 路由定义目录
 */
Http->setRoutePath($path)


/**
 * 设置应用绑定
 * @access public
 * @param bool $bind 是否绑定
 * @return $this
 */
Http->setBind($bind = true)


/**
 * 是否绑定应用
 * @access public
 * @return bool
 */
Http->isBind()


/**
 * 执行应用程序
 * @access public
 * @param Request|null $request
 * @return Response
 */
Http->run($request = NULL)


/**
 * 初始化
 */
$this->initialize()


/**
 * 执行应用程序
 * @param Request $request
 * @return mixed
 */
$this->runWithRequest($request)



$this->dispatchToRoute($request)


/**
 * 加载全局中间件
 */
$this->loadMiddleware()


/**
 * 加载路由
 * @access protected
 * @return void
 */
$this->loadRoutes()


/**
 * Report the exception to the exception handler.
 *
 * @param Throwable $e
 * @return void
 */
$this->reportException($e)


/**
 * Render the exception to a response.
 *
 * @param Request   $request
 * @param Throwable $e
 * @return Response
 */
$this->renderException($request, $e)


/**
 * HttpEnd
 * @param Response $response
 * @return void
 */
Http->end($response)

Lang

$Lang = new Lang();


Lang::__make($config)


/**
 * 设置当前语言
 * @access public
 * @param string $lang 语言
 * @return void
 */
Lang->setLangSet($lang)


/**
 * 获取当前语言
 * @access public
 * @return string
 */
Lang->getLangSet()


/**
 * 获取默认语言
 * @access public
 * @return string
 */
Lang->defaultLangSet()


/**
 * 加载语言定义(不区分大小写)
 * @access public
 * @param string|array $file  语言文件
 * @param string   $range 语言作用域
 * @return array
 */
Lang->load($file, $range = '')


/**
 * 解析语言文件
 * @access protected
 * @param string $file 语言文件名
 * @return array
 */
$this->parse($file)


/**
 * 判断是否存在语言定义(不区分大小写)
 * @access public
 * @param string|null $name  语言变量
 * @param string  $range 语言作用域
 * @return bool
 */
Lang->has($name, $range = '')


/**
 * 获取语言定义(不区分大小写)
 * @access public
 * @param string|null $name  语言变量
 * @param array   $vars  变量替换
 * @param string  $range 语言作用域
 * @return mixed
 */
Lang->get($name = NULL, $vars = [], $range = '')


/**
 * 自动侦测设置获取语言选择
 * @access public
 * @param Request $request
 * @return string
 */
Lang->detect($request)


/**
 * 保存当前语言到Cookie
 * @access public
 * @param Cookie $cookie Cookie对象
 * @return void
 */
Lang->saveToCookie($cookie)

Log

$Log = new Log();

/**
 * 默认驱动
 * @return string|null
 */
Log->getDefaultDriver()


/**
 * 获取日志配置
 * @access public
 * @param null|string $name名称
 * @param mixed   $default 默认值
 * @return mixed
 */
Log->getConfig($name = NULL, $default = NULL)


/**
 * 获取渠道配置
 * @param string $channel
 * @param null   $name
 * @param null   $default
 * @return array
 */
Log->getChannelConfig($channel, $name = NULL, $default = NULL)


/**
 * driver()的别名
 * @param string|array $name 渠道名
 * @return Channel|ChannelSet
 */
Log->channel($name = NULL)



$this->resolveType($name)



Log->createDriver($name)



$this->resolveConfig($name)


/**
 * 清空日志信息
 * @access public
 * @param string|array $channel 日志通道名
 * @return $this
 */
Log->clear($channel = '*')


/**
 * 关闭本次请求日志写入
 * @access public
 * @param string|array $channel 日志通道名
 * @return $this
 */
Log->close($channel = '*')


/**
 * 获取日志信息
 * @access public
 * @param string $channel 日志通道名
 * @return array
 */
Log->getLog($channel = NULL)


/**
 * 保存日志信息
 * @access public
 * @return bool
 */
Log->save()


/**
 * 记录日志信息
 * @access public
 * @param mixed  $msg 日志信息
 * @param string $type日志级别
 * @param array  $context 替换内容
 * @param bool   $lazy
 * @return $this
 */
Log->record($msg, $type = 'info', $context = [], $lazy = true)


/**
 * 实时写入日志信息
 * @access public
 * @param mixed  $msg 调试信息
 * @param string $type日志级别
 * @param array  $context 替换内容
 * @return $this
 */
Log->write($msg, $type = 'info', $context = [])


/**
 * 注册日志写入事件监听
 * @param $listener
 * @return Event
 */
Log->listen($listener)


/**
 * 记录日志信息
 * @access public
 * @param string $level   日志级别
 * @param mixed  $message 日志信息
 * @param array  $context 替换内容
 * @return void
 */
Log->log($level, $message, $context = [])


/**
 * 记录emergency信息
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->emergency($message, $context = [])


/**
 * 记录警报信息
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->alert($message, $context = [])


/**
 * 记录紧急情况
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->critical($message, $context = [])


/**
 * 记录错误信息
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->error($message, $context = [])


/**
 * 记录warning信息
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->warning($message, $context = [])


/**
 * 记录notice信息
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->notice($message, $context = [])


/**
 * 记录一般信息
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->info($message, $context = [])


/**
 * 记录调试信息
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->debug($message, $context = [])


/**
 * 记录sql信息
 * @access public
 * @param mixed $message 日志信息
 * @param array $context 替换内容
 * @return void
 */
Log->sql($message, $context = [])



Log->__call($method, $parameters)


/**
 * 获取驱动实例
 * @param null|string $name
 * @return mixed
 */
$this->driver($name = NULL)


/**
 * 获取驱动实例
 * @param string $name
 * @return mixed
 */
$this->getDriver($name)


/**
 * 获取驱动类
 * @param string $type
 * @return string
 */
$this->resolveClass($type)


/**
 * 获取驱动参数
 * @param $name
 * @return array
 */
$this->resolveParams($name)


/**
 * 移除一个驱动实例
 *
 * @param array|string|null $name
 * @return $this
 */
Log->forgetDriver($name = NULL)

Manager

$Manager = new Manager();

/**
 * 获取驱动实例
 * @param null|string $name
 * @return mixed
 */
$this->driver($name = NULL)


/**
 * 获取驱动实例
 * @param string $name
 * @return mixed
 */
$this->getDriver($name)


/**
 * 获取驱动类型
 * @param string $name
 * @return mixed
 */
$this->resolveType($name)


/**
 * 获取驱动配置
 * @param string $name
 * @return mixed
 */
$this->resolveConfig($name)


/**
 * 获取驱动类
 * @param string $type
 * @return string
 */
$this->resolveClass($type)


/**
 * 获取驱动参数
 * @param $name
 * @return array
 */
$this->resolveParams($name)


/**
 * 创建驱动
 *
 * @param string $name
 * @return mixed
 *
 */
$this->createDriver($name)


/**
 * 移除一个驱动实例
 *
 * @param array|string|null $name
 * @return $this
 */
Manager->forgetDriver($name = NULL)


/**
 * 默认驱动
 * @return string|null
 */
Manager->getDefaultDriver()


/**
 * 动态调用
 * @param string $method
 * @param array  $parameters
 * @return mixed
 */
Manager->__call($method, $parameters)

Middleware

$Middleware = new Middleware();

/**
 * 导入中间件
 * @access public
 * @param array  $middlewares
 * @param string $type 中间件类型
 * @return void
 */
Middleware->import($middlewares = [], $type = 'global')


/**
 * 注册中间件
 * @access public
 * @param mixed  $middleware
 * @param string $type 中间件类型
 * @return void
 */
Middleware->add($middleware, $type = 'global')


/**
 * 注册路由中间件
 * @access public
 * @param mixed $middleware
 * @return void
 */
Middleware->route($middleware)


/**
 * 注册控制器中间件
 * @access public
 * @param mixed $middleware
 * @return void
 */
Middleware->controller($middleware)


/**
 * 注册中间件到开始位置
 * @access public
 * @param mixed  $middleware
 * @param string $type 中间件类型
 */
Middleware->unshift($middleware, $type = 'global')


/**
 * 获取注册的中间件
 * @access public
 * @param string $type 中间件类型
 * @return array
 */
Middleware->all($type = 'global')


/**
 * 调度管道
 * @access public
 * @param string $type 中间件类型
 * @return Pipeline
 */
Middleware->pipeline($type = 'global')


/**
 * 结束调度
 * @param Response $response
 */
Middleware->end($response)


/**
 * 异常处理
 * @param Request   $passable
 * @param Throwable $e
 * @return Response
 */
Middleware->handleException($passable, $e)


/**
 * 解析中间件
 * @access protected
 * @param mixed  $middleware
 * @param string $type 中间件类型
 * @return array
 */
$this->buildMiddleware($middleware, $type)


/**
 * 中间件排序
 * @param array $middlewares
 * @return array
 */
$this->sortMiddleware($middlewares)


/**
 * 获取中间件优先级
 * @param $priority
 * @param $middleware
 * @return int
 */
$this->getMiddlewarePriority($priority, $middleware)

Pipeline

$Pipeline = new Pipeline();

/**
 * 初始数据
 * @param $passable
 * @return $this
 */
Pipeline->send($passable)


/**
 * 调用栈
 * @param $pipes
 * @return $this
 */
Pipeline->through($pipes)


/**
 * 执行
 * @param Closure $destination
 * @return mixed
 */
Pipeline->then($destination)


/**
 * 设置异常处理器
 * @param callable $handler
 * @return $this
 */
Pipeline->whenException($handler)



$this->carry()


/**
 * 异常处理
 * @param $passable
 * @param $e
 * @return mixed
 */
$this->handleException($passable, $e)

Request

$Request = new Request();


Request::__make($app)


/**
 * 设置当前包含协议的域名
 * @access public
 * @param  string $domain 域名
 * @return $this
 */
Request->setDomain($domain)


/**
 * 获取当前包含协议的域名
 * @access public
 * @param  bool $port 是否需要去除端口号
 * @return string
 */
Request->domain($port = false)


/**
 * 获取当前根域名
 * @access public
 * @return string
 */
Request->rootDomain()


/**
 * 设置当前泛域名的值
 * @access public
 * @param  string $domain 域名
 * @return $this
 */
Request->setSubDomain($domain)


/**
 * 获取当前子域名
 * @access public
 * @return string
 */
Request->subDomain()


/**
 * 设置当前泛域名的值
 * @access public
 * @param  string $domain 域名
 * @return $this
 */
Request->setPanDomain($domain)


/**
 * 获取当前泛域名的值
 * @access public
 * @return string
 */
Request->panDomain()


/**
 * 设置当前完整URL 包括QUERY_STRING
 * @access public
 * @param  string $url URL地址
 * @return $this
 */
Request->setUrl($url)


/**
 * 获取当前完整URL 包括QUERY_STRING
 * @access public
 * @param  bool $complete 是否包含完整域名
 * @return string
 */
Request->url($complete = false)


/**
 * 设置当前URL 不含QUERY_STRING
 * @access public
 * @param  string $url URL地址
 * @return $this
 */
Request->setBaseUrl($url)


/**
 * 获取当前URL 不含QUERY_STRING
 * @access public
 * @param  bool $complete 是否包含完整域名
 * @return string
 */
Request->baseUrl($complete = false)


/**
 * 获取当前执行的文件 SCRIPT_NAME
 * @access public
 * @param  bool $complete 是否包含完整域名
 * @return string
 */
Request->baseFile($complete = false)


/**
 * 设置URL访问根地址
 * @access public
 * @param  string $url URL地址
 * @return $this
 */
Request->setRoot($url)


/**
 * 获取URL访问根地址
 * @access public
 * @param  bool $complete 是否包含完整域名
 * @return string
 */
Request->root($complete = false)


/**
 * 获取URL访问根目录
 * @access public
 * @return string
 */
Request->rootUrl()


/**
 * 设置当前请求的pathinfo
 * @access public
 * @param  string $pathinfo
 * @return $this
 */
Request->setPathinfo($pathinfo)


/**
 * 获取当前请求URL的pathinfo信息(含URL后缀)
 * @access public
 * @return string
 */
Request->pathinfo()


/**
 * 当前URL的访问后缀
 * @access public
 * @return string
 */
Request->ext()


/**
 * 获取当前请求的时间
 * @access public
 * @param  bool $float 是否使用浮点类型
 * @return integer|float
 */
Request->time($float = false)


/**
 * 当前请求的资源类型
 * @access public
 * @return string
 */
Request->type()


/**
 * 设置资源类型
 * @access public
 * @param  string|array $type 资源类型名
 * @param  string   $val 资源类型
 * @return void
 */
Request->mimeType($type, $val = '')


/**
 * 设置请求类型
 * @access public
 * @param  string $method 请求类型
 * @return $this
 */
Request->setMethod($method)


/**
 * 当前的请求类型
 * @access public
 * @param  bool $origin 是否获取原始请求类型
 * @return string
 */
Request->method($origin = false)


/**
 * 是否为GET请求
 * @access public
 * @return bool
 */
Request->isGet()


/**
 * 是否为POST请求
 * @access public
 * @return bool
 */
Request->isPost()


/**
 * 是否为PUT请求
 * @access public
 * @return bool
 */
Request->isPut()


/**
 * 是否为DELTE请求
 * @access public
 * @return bool
 */
Request->isDelete()


/**
 * 是否为HEAD请求
 * @access public
 * @return bool
 */
Request->isHead()


/**
 * 是否为PATCH请求
 * @access public
 * @return bool
 */
Request->isPatch()


/**
 * 是否为OPTIONS请求
 * @access public
 * @return bool
 */
Request->isOptions()


/**
 * 是否为cli
 * @access public
 * @return bool
 */
Request->isCli()


/**
 * 是否为cgi
 * @access public
 * @return bool
 */
Request->isCgi()


/**
 * 获取当前请求的参数
 * @access public
 * @param  string|array $name 变量名
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->param($name = '', $default = NULL, $filter = '')


/**
 * 获取包含文件在内的请求参数
 * @access public
 * @param  string|array $name 变量名
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->all($name = '', $filter = '')


/**
 * 设置路由变量
 * @access public
 * @param  Rule $rule 路由对象
 * @return $this
 */
Request->setRule($rule)


/**
 * 获取当前路由对象
 * @access public
 * @return Rule|null
 */
Request->rule()


/**
 * 设置路由变量
 * @access public
 * @param  array $route 路由变量
 * @return $this
 */
Request->setRoute($route)


/**
 * 获取路由参数
 * @access public
 * @param  string|array $name 变量名
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->route($name = '', $default = NULL, $filter = '')


/**
 * 获取GET参数
 * @access public
 * @param  string|array $name 变量名
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->get($name = '', $default = NULL, $filter = '')


/**
 * 获取中间件传递的参数
 * @access public
 * @param  mixed $name 变量名
 * @param  mixed $default 默认值
 * @return mixed
 */
Request->middleware($name, $default = NULL)


/**
 * 获取POST参数
 * @access public
 * @param  string|array $name 变量名
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->post($name = '', $default = NULL, $filter = '')


/**
 * 获取PUT参数
 * @access public
 * @param  string|array $name 变量名
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->put($name = '', $default = NULL, $filter = '')



$this->getInputData($content)


/**
 * 设置获取DELETE参数
 * @access public
 * @param  mixed$name 变量名
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->delete($name = '', $default = NULL, $filter = '')


/**
 * 设置获取PATCH参数
 * @access public
 * @param  mixed$name 变量名
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->patch($name = '', $default = NULL, $filter = '')


/**
 * 获取request变量
 * @access public
 * @param  string|array $name 数据名称
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->request($name = '', $default = NULL, $filter = '')


/**
 * 获取环境变量
 * @access public
 * @param  string $name 数据名称
 * @param  string $default 默认值
 * @return mixed
 */
Request->env($name = '', $default = NULL)


/**
 * 获取session数据
 * @access public
 * @param  string $name 数据名称
 * @param  string $default 默认值
 * @return mixed
 */
Request->session($name = '', $default = NULL)


/**
 * 获取cookie参数
 * @access public
 * @param  mixed$name 数据名称
 * @param  string   $default 默认值
 * @param  string|array $filter 过滤方法
 * @return mixed
 */
Request->cookie($name = '', $default = NULL, $filter = '')


/**
 * 获取server参数
 * @access public
 * @param  string $name 数据名称
 * @param  string $default 默认值
 * @return mixed
 */
Request->server($name = '', $default = '')


/**
 * 获取上传的文件信息
 * @access public
 * @param  string $name 名称
 * @return null|array|UploadedFile
 */
Request->file($name = '')



$this->dealUploadFile($files, $name)



$this->throwUploadFileError($error)


/**
 * 设置或者获取当前的Header
 * @access public
 * @param  string $name header名称
 * @param  string $default 默认值
 * @return string|array
 */
Request->header($name = '', $default = NULL)


/**
 * 获取变量 支持过滤和默认值
 * @access public
 * @param  array$data 数据源
 * @param  string|false $name 字段名
 * @param  mixed$default 默认值
 * @param  string|array $filter 过滤函数
 * @return mixed
 */
Request->input($data = [], $name = '', $default = NULL, $filter = '')



$this->filterData($data, $filter, $name, $default)


/**
 * 强制类型转换
 * @access public
 * @param  mixed  $data
 * @param  string $type
 * @return mixed
 */
$this->typeCast(&$data, $type)


/**
 * 获取数据
 * @access public
 * @param  array  $data 数据源
 * @param  string $name 字段名
 * @param  mixed  $default 默认值
 * @return mixed
 */
$this->getData($data, $name, $default = NULL)


/**
 * 设置或获取当前的过滤规则
 * @access public
 * @param  mixed $filter 过滤规则
 * @return mixed
 */
Request->filter($filter = NULL)



$this->getFilter($filter, $default)


/**
 * 递归过滤给定的值
 * @access public
 * @param  mixed $value 键值
 * @param  mixed $key 键名
 * @param  array $filters 过滤方法+默认值
 * @return mixed
 */
Request->filterValue(&$value, $key, $filters)


/**
 * 是否存在某个请求参数
 * @access public
 * @param  string $name 变量名
 * @param  string $type 变量类型
 * @param  bool   $checkEmpty 是否检测空值
 * @return bool
 */
Request->has($name, $type = 'param', $checkEmpty = false)


/**
 * 获取指定的参数
 * @access public
 * @param  array$name 变量名
 * @param  mixed$data 数据或者变量类型
 * @param  string|array $filter 过滤方法
 * @return array
 */
Request->only($name, $data = 'param', $filter = '')


/**
 * 排除指定参数获取
 * @access public
 * @param  array  $name 变量名
 * @param  string $type 变量类型
 * @return mixed
 */
Request->except($name, $type = 'param')


/**
 * 当前是否ssl
 * @access public
 * @return bool
 */
Request->isSsl()


/**
 * 当前是否JSON请求
 * @access public
 * @return bool
 */
Request->isJson()


/**
 * 当前是否Ajax请求
 * @access public
 * @param  bool $ajax true 获取原始ajax请求
 * @return bool
 */
Request->isAjax($ajax = false)


/**
 * 当前是否Pjax请求
 * @access public
 * @param  bool $pjax true 获取原始pjax请求
 * @return bool
 */
Request->isPjax($pjax = false)


/**
 * 获取客户端IP地址
 * @access public
 * @return string
 */
Request->ip()


/**
 * 检测是否是合法的IP地址
 *
 * @param string $ip   IP地址
 * @param string $type IP地址类型 (ipv4, ipv6)
 *
 * @return boolean
 */
Request->isValidIP($ip, $type = '')


/**
 * 将IP地址转换为二进制字符串
 *
 * @param string $ip
 *
 * @return string
 */
Request->ip2bin($ip)


/**
 * 检测是否使用手机访问
 * @access public
 * @return bool
 */
Request->isMobile()


/**
 * 当前URL地址中的scheme参数
 * @access public
 * @return string
 */
Request->scheme()


/**
 * 当前请求URL地址中的query参数
 * @access public
 * @return string
 */
Request->query()


/**
 * 设置当前请求的host(包含端口)
 * @access public
 * @param  string $host 主机名(含端口)
 * @return $this
 */
Request->setHost($host)


/**
 * 当前请求的host
 * @access public
 * @param bool $strict  true 仅仅获取HOST
 * @return string
 */
Request->host($strict = false)


/**
 * 当前请求URL地址中的port参数
 * @access public
 * @return int
 */
Request->port()


/**
 * 当前请求 SERVER_PROTOCOL
 * @access public
 * @return string
 */
Request->protocol()


/**
 * 当前请求 REMOTE_PORT
 * @access public
 * @return int
 */
Request->remotePort()


/**
 * 当前请求 HTTP_CONTENT_TYPE
 * @access public
 * @return string
 */
Request->contentType()


/**
 * 获取当前请求的安全Key
 * @access public
 * @return string
 */
Request->secureKey()


/**
 * 设置当前的控制器名
 * @access public
 * @param  string $controller 控制器名
 * @return $this
 */
Request->setController($controller)


/**
 * 设置当前的操作名
 * @access public
 * @param  string $action 操作名
 * @return $this
 */
Request->setAction($action)


/**
 * 获取当前的控制器名
 * @access public
 * @param  bool $convert 转换为小写
 * @return string
 */
Request->controller($convert = false)


/**
 * 获取当前的操作名
 * @access public
 * @param  bool $convert 转换为小写
 * @return string
 */
Request->action($convert = false)


/**
 * 设置或者获取当前请求的content
 * @access public
 * @return string
 */
Request->getContent()


/**
 * 获取当前请求的php://input
 * @access public
 * @return string
 */
Request->getInput()


/**
 * 生成请求令牌
 * @access public
 * @param  string $name 令牌名称
 * @param  mixed  $type 令牌生成方法
 * @return string
 */
Request->buildToken($name = '__token__', $type = 'md5')


/**
 * 检查请求令牌
 * @access public
 * @param  string $token 令牌名称
 * @param  array  $data  表单数据
 * @return bool
 */
Request->checkToken($token = '__token__', $data = [])


/**
 * 设置在中间件传递的数据
 * @access public
 * @param  array $middleware 数据
 * @return $this
 */
Request->withMiddleware($middleware)


/**
 * 设置GET数据
 * @access public
 * @param  array $get 数据
 * @return $this
 */
Request->withGet($get)


/**
 * 设置POST数据
 * @access public
 * @param  array $post 数据
 * @return $this
 */
Request->withPost($post)


/**
 * 设置COOKIE数据
 * @access public
 * @param array $cookie 数据
 * @return $this
 */
Request->withCookie($cookie)


/**
 * 设置SESSION数据
 * @access public
 * @param Session $session 数据
 * @return $this
 */
Request->withSession($session)


/**
 * 设置SERVER数据
 * @access public
 * @param  array $server 数据
 * @return $this
 */
Request->withServer($server)


/**
 * 设置HEADER数据
 * @access public
 * @param  array $header 数据
 * @return $this
 */
Request->withHeader($header)


/**
 * 设置ENV数据
 * @access public
 * @param Env $env 数据
 * @return $this
 */
Request->withEnv($env)


/**
 * 设置php://input数据
 * @access public
 * @param string $input RAW数据
 * @return $this
 */
Request->withInput($input)


/**
 * 设置文件上传数据
 * @access public
 * @param  array $files 上传信息
 * @return $this
 */
Request->withFiles($files)


/**
 * 设置ROUTE变量
 * @access public
 * @param  array $route 数据
 * @return $this
 */
Request->withRoute($route)


/**
 * 设置中间传递数据
 * @access public
 * @param  string$name  参数名
 * @param  mixed $value 值
 */
Request->__set($name, $value)


/**
 * 获取中间传递数据的值
 * @access public
 * @param  string $name 名称
 * @return mixed
 */
Request->__get($name)


/**
 * 检测中间传递数据的值
 * @access public
 * @param  string $name 名称
 * @return boolean
 */
Request->__isset($name)



Request->offsetExists($name)



Request->offsetGet($name)



Request->offsetSet($name, $value)



Request->offsetUnset($name)

Response

$Response = new Response();

/**
 * 初始化
 * @access protected
 * @param  mixed  $data 输出数据
 * @param  int$code 状态码
 */
$this->init($data = '', $code = 200)


/**
 * 创建Response对象
 * @access public
 * @param  mixed  $data 输出数据
 * @param  string $type 输出类型
 * @param  int$code 状态码
 * @return Response
 */
Response::create($data = '', $type = 'html', $code = 200)


/**
 * 设置Session对象
 * @access public
 * @param  Session $session Session对象
 * @return $this
 */
Response->setSession($session)


/**
 * 发送数据到客户端
 * @access public
 * @return void
 * @throws \InvalidArgumentException
 */
Response->send()


/**
 * 处理数据
 * @access protected
 * @param  mixed $data 要处理的数据
 * @return mixed
 */
$this->output($data)


/**
 * 输出数据
 * @access protected
 * @param string $data 要处理的数据
 * @return void
 */
$this->sendData($data)


/**
 * 输出的参数
 * @access public
 * @param  mixed $options 输出参数
 * @return $this
 */
Response->options($options = [])


/**
 * 输出数据设置
 * @access public
 * @param  mixed $data 输出数据
 * @return $this
 */
Response->data($data)


/**
 * 是否允许请求缓存
 * @access public
 * @param  bool $cache 允许请求缓存
 * @return $this
 */
Response->allowCache($cache)


/**
 * 是否允许请求缓存
 * @access public
 * @return bool
 */
Response->isAllowCache()


/**
 * 设置Cookie
 * @access public
 * @param  string $name  cookie名称
 * @param  string $value cookie值
 * @param  mixed  $option 可选参数
 * @return $this
 */
Response->cookie($name, $value, $option = NULL)


/**
 * 设置响应头
 * @access public
 * @param  array $header  参数
 * @return $this
 */
Response->header($header = [])


/**
 * 设置页面输出内容
 * @access public
 * @param  mixed $content
 * @return $this
 */
Response->content($content)


/**
 * 发送HTTP状态
 * @access public
 * @param  integer $code 状态码
 * @return $this
 */
Response->code($code)


/**
 * LastModified
 * @access public
 * @param  string $time
 * @return $this
 */
Response->lastModified($time)


/**
 * Expires
 * @access public
 * @param  string $time
 * @return $this
 */
Response->expires($time)


/**
 * ETag
 * @access public
 * @param  string $eTag
 * @return $this
 */
Response->eTag($eTag)


/**
 * 页面缓存控制
 * @access public
 * @param  string $cache 状态码
 * @return $this
 */
Response->cacheControl($cache)


/**
 * 页面输出类型
 * @access public
 * @param  string $contentType 输出类型
 * @param  string $charset 输出编码
 * @return $this
 */
Response->contentType($contentType, $charset = 'utf-8')


/**
 * 获取头部信息
 * @access public
 * @param  string $name 头部名称
 * @return mixed
 */
Response->getHeader($name = '')


/**
 * 获取原始数据
 * @access public
 * @return mixed
 */
Response->getData()


/**
 * 获取输出数据
 * @access public
 * @return string
 */
Response->getContent()


/**
 * 获取状态码
 * @access public
 * @return integer
 */
Response->getCode()

Route

$Route = new Route();


$this->init()



Route->config($name = NULL)


/**
 * 设置路由域名及分组(包括资源路由)是否延迟解析
 * @access public
 * @param bool $lazy 路由是否延迟解析
 * @return $this
 */
Route->lazy($lazy = true)


/**
 * 设置路由为测试模式
 * @access public
 * @param bool $test 路由是否测试模式
 * @return void
 */
Route->setTestMode($test)


/**
 * 检查路由是否为测试模式
 * @access public
 * @return bool
 */
Route->isTest()


/**
 * 设置路由域名及分组(包括资源路由)是否合并解析
 * @access public
 * @param bool $merge 路由是否合并解析
 * @return $this
 */
Route->mergeRuleRegex($merge = true)


/**
 * 初始化默认域名
 * @access protected
 * @return void
 */
$this->setDefaultDomain()


/**
 * 设置当前分组
 * @access public
 * @param RuleGroup $group 域名
 * @return void
 */
Route->setGroup($group)


/**
 * 获取指定标识的路由分组 不指定则获取当前分组
 * @access public
 * @param string $name 分组标识
 * @return RuleGroup
 */
Route->getGroup($name = NULL)


/**
 * 注册变量规则
 * @access public
 * @param array $pattern 变量规则
 * @return $this
 */
Route->pattern($pattern)


/**
 * 注册路由参数
 * @access public
 * @param array $option 参数
 * @return $this
 */
Route->option($option)


/**
 * 注册域名路由
 * @access public
 * @param string|array $name 子域名
 * @param mixed$rule 路由规则
 * @return Domain
 */
Route->domain($name, $rule = NULL)


/**
 * 获取域名
 * @access public
 * @return array
 */
Route->getDomains()


/**
 * 获取RuleName对象
 * @access public
 * @return RuleName
 */
Route->getRuleName()


/**
 * 设置路由绑定
 * @access public
 * @param string $bind   绑定信息
 * @param string $domain 域名
 * @return $this
 */
Route->bind($bind, $domain = NULL)


/**
 * 读取路由绑定信息
 * @access public
 * @return array
 */
Route->getBind()


/**
 * 读取路由绑定
 * @access public
 * @param string $domain 域名
 * @return string|null
 */
Route->getDomainBind($domain = NULL)


/**
 * 读取路由标识
 * @access public
 * @param string $name   路由标识
 * @param string $domain 域名
 * @param string $method 请求类型
 * @return array
 */
Route->getName($name = NULL, $domain = NULL, $method = '*')


/**
 * 批量导入路由标识
 * @access public
 * @param array $name 路由标识
 * @return void
 */
Route->import($name)


/**
 * 注册路由标识
 * @access public
 * @param string   $name 路由标识
 * @param RuleItem $ruleItem 路由规则
 * @param bool $first是否优先
 * @return void
 */
Route->setName($name, $ruleItem, $first = false)


/**
 * 保存路由规则
 * @access public
 * @param string   $rule 路由规则
 * @param RuleItem $ruleItem RuleItem对象
 * @return void
 */
Route->setRule($rule, $ruleItem = NULL)


/**
 * 读取路由
 * @access public
 * @param string $rule 路由规则
 * @return RuleItem[]
 */
Route->getRule($rule)


/**
 * 读取路由列表
 * @access public
 * @return array
 */
Route->getRuleList()


/**
 * 清空路由规则
 * @access public
 * @return void
 */
Route->clear()


/**
 * 注册路由规则
 * @access public
 * @param string $rule   路由规则
 * @param mixed  $route  路由地址
 * @param string $method 请求类型
 * @return RuleItem
 */
Route->rule($rule, $route = NULL, $method = '*')


/**
 * 设置跨域有效路由规则
 * @access public
 * @param Rule   $rule   路由规则
 * @param string $method 请求类型
 * @return $this
 */
Route->setCrossDomainRule($rule, $method = '*')


/**
 * 注册路由分组
 * @access public
 * @param string|\Closure $name  分组名称或者参数
 * @param mixed   $route 分组路由
 * @return RuleGroup
 */
Route->group($name, $route = NULL)


/**
 * 注册路由
 * @access public
 * @param string $rule  路由规则
 * @param mixed  $route 路由地址
 * @return RuleItem
 */
Route->any($rule, $route)


/**
 * 注册GET路由
 * @access public
 * @param string $rule  路由规则
 * @param mixed  $route 路由地址
 * @return RuleItem
 */
Route->get($rule, $route)


/**
 * 注册POST路由
 * @access public
 * @param string $rule  路由规则
 * @param mixed  $route 路由地址
 * @return RuleItem
 */
Route->post($rule, $route)


/**
 * 注册PUT路由
 * @access public
 * @param string $rule  路由规则
 * @param mixed  $route 路由地址
 * @return RuleItem
 */
Route->put($rule, $route)


/**
 * 注册DELETE路由
 * @access public
 * @param string $rule  路由规则
 * @param mixed  $route 路由地址
 * @return RuleItem
 */
Route->delete($rule, $route)


/**
 * 注册PATCH路由
 * @access public
 * @param string $rule  路由规则
 * @param mixed  $route 路由地址
 * @return RuleItem
 */
Route->patch($rule, $route)


/**
 * 注册OPTIONS路由
 * @access public
 * @param string $rule  路由规则
 * @param mixed  $route 路由地址
 * @return RuleItem
 */
Route->options($rule, $route)


/**
 * 注册资源路由
 * @access public
 * @param string $rule  路由规则
 * @param string $route 路由地址
 * @return Resource
 */
Route->resource($rule, $route)


/**
 * 注册视图路由
 * @access public
 * @param string $rule 路由规则
 * @param string $template 路由模板地址
 * @param array  $vars 模板变量
 * @return RuleItem
 */
Route->view($rule, $template = '', $vars = [])


/**
 * 注册重定向路由
 * @access public
 * @param string $rule   路由规则
 * @param string $route  路由地址
 * @param int$status 状态码
 * @return RuleItem
 */
Route->redirect($rule, $route = '', $status = 301)


/**
 * rest方法定义和修改
 * @access public
 * @param string|array $name 方法名称
 * @param array|bool   $resource 资源
 * @return $this
 */
Route->rest($name, $resource = [])


/**
 * 获取rest方法定义的参数
 * @access public
 * @param string $name 方法名称
 * @return array|null
 */
Route->getRest($name = NULL)


/**
 * 注册未匹配路由规则后的处理
 * @access public
 * @param string|Closure $route  路由地址
 * @param string $method 请求类型
 * @return RuleItem
 */
Route->miss($route, $method = '*')


/**
 * 路由调度
 * @param Request $request
 * @param Closure|bool $withRoute
 * @return Response
 */
Route->dispatch($request, $withRoute = true)


/**
 * 检测URL路由
 * @access public
 * @return Dispatch|false
 * @throws RouteNotFoundException
 */
Route->check()


/**
 * 获取当前请求URL的pathinfo信息(不含URL后缀)
 * @access protected
 * @return string
 */
$this->path()


/**
 * 默认URL解析
 * @access public
 * @param string $url URL地址
 * @return Dispatch
 */
Route->url($url)


/**
 * 检测域名的路由规则
 * @access protected
 * @return Domain
 */
$this->checkDomain()


/**
 * URL生成 支持路由反射
 * @access public
 * @param string $url  路由地址
 * @param array  $vars 参数 ['a'=>'val1', 'b'=>'val2']
 * @return UrlBuild
 */
Route->buildUrl($url = '', $vars = [])


/**
 * 设置全局的路由分组参数
 * @access public
 * @param string $method 方法名
 * @param array  $args   调用参数
 * @return RuleGroup
 */
Route->__call($method, $args)

Service

$Service = new Service();

/**
 * 加载路由
 * @access protected
 * @param string $path 路由路径
 */
$this->loadRoutesFrom($path)


/**
 * 注册路由
 * @param Closure $closure
 */
$this->registerRoutes($closure)


/**
 * 添加指令
 * @access protected
 * @param array|string $commands 指令
 */
$this->commands($commands)

Session

$Session = new Session();


$this->createDriver($name)


/**
 * 获取Session配置
 * @access public
 * @param null|string $name名称
 * @param mixed   $default 默认值
 * @return mixed
 */
Session->getConfig($name = NULL, $default = NULL)



$this->resolveConfig($name)


/**
 * 默认驱动
 * @return string|null
 */
Session->getDefaultDriver()


/**
 * 获取驱动实例
 * @param null|string $name
 * @return mixed
 */
$this->driver($name = NULL)


/**
 * 获取驱动实例
 * @param string $name
 * @return mixed
 */
$this->getDriver($name)


/**
 * 获取驱动类型
 * @param string $name
 * @return mixed
 */
$this->resolveType($name)


/**
 * 获取驱动类
 * @param string $type
 * @return string
 */
$this->resolveClass($type)


/**
 * 获取驱动参数
 * @param $name
 * @return array
 */
$this->resolveParams($name)


/**
 * 移除一个驱动实例
 *
 * @param array|string|null $name
 * @return $this
 */
Session->forgetDriver($name = NULL)


/**
 * 动态调用
 * @param string $method
 * @param array  $parameters
 * @return mixed
 */
Session->__call($method, $parameters)

Validate

$Validate = new Validate();

/**
 * 设置服务注入
 * @access public
 * @param Closure $maker
 * @return void
 */
Validate::maker($maker)


/**
 * 设置Lang对象
 * @access public
 * @param Lang $lang Lang对象
 * @return void
 */
Validate->setLang($lang)


/**
 * 设置Db对象
 * @access public
 * @param Db $db Db对象
 * @return void
 */
Validate->setDb($db)


/**
 * 设置Request对象
 * @access public
 * @param Request $request Request对象
 * @return void
 */
Validate->setRequest($request)


/**
 * 添加字段验证规则
 * @access protected
 * @param string|array $name 字段名称或者规则数组
 * @param mixed$rule 验证规则或者字段描述信息
 * @return $this
 */
Validate->rule($name, $rule = '')


/**
 * 注册验证(类型)规则
 * @access public
 * @param string   $type 验证规则类型
 * @param callable $callback callback方法(或闭包)
 * @param string   $message  验证失败提示信息
 * @return $this
 */
Validate->extend($type, $callback = NULL, $message = NULL)


/**
 * 设置验证规则的默认提示信息
 * @access public
 * @param string|array $type 验证规则类型名称或者数组
 * @param string   $msg  验证提示信息
 * @return void
 */
Validate->setTypeMsg($type, $msg = NULL)


/**
 * 设置提示信息
 * @access public
 * @param array $message 错误信息
 * @return Validate
 */
Validate->message($message)


/**
 * 设置验证场景
 * @access public
 * @param string $name 场景名
 * @return $this
 */
Validate->scene($name)


/**
 * 判断是否存在某个验证场景
 * @access public
 * @param string $name 场景名
 * @return bool
 */
Validate->hasScene($name)


/**
 * 设置批量验证
 * @access public
 * @param bool $batch 是否批量验证
 * @return $this
 */
Validate->batch($batch = true)


/**
 * 设置验证失败后是否抛出异常
 * @access protected
 * @param bool $fail 是否抛出异常
 * @return $this
 */
Validate->failException($fail = true)


/**
 * 指定需要验证的字段列表
 * @access public
 * @param array $fields 字段名
 * @return $this
 */
Validate->only($fields)


/**
 * 移除某个字段的验证规则
 * @access public
 * @param string|array $field 字段名
 * @param mixed$rule  验证规则 true 移除所有规则
 * @return $this
 */
Validate->remove($field, $rule = NULL)


/**
 * 追加某个字段的验证规则
 * @access public
 * @param string|array $field 字段名
 * @param mixed$rule  验证规则
 * @return $this
 */
Validate->append($field, $rule = NULL)


/**
 * 数据自动验证
 * @access public
 * @param array $data  数据
 * @param array $rules 验证规则
 * @return bool
 */
Validate->check($data, $rules = [])


/**
 * 根据验证规则验证数据
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rules 验证规则
 * @return bool
 */
Validate->checkRule($value, $rules)


/**
 * 验证单个字段规则
 * @access protected
 * @param string $field 字段名
 * @param mixed  $value 字段值
 * @param mixed  $rules 验证规则
 * @param array  $data  数据
 * @param string $title 字段描述
 * @param array  $msg   提示信息
 * @return mixed
 */
$this->checkItem($field, $value, $rules, $data, $title = '', $msg = [])


/**
 * 获取当前验证类型及规则
 * @access public
 * @param mixed $key
 * @param mixed $rule
 * @return array
 */
$this->getValidateType($key, $rule)


/**
 * 验证是否和某个字段的值一致
 * @access public
 * @param mixed  $value 字段值
 * @param mixed  $rule  验证规则
 * @param array  $data  数据
 * @param string $field 字段名
 * @return bool
 */
Validate->confirm($value, $rule, $data = [], $field = '')


/**
 * 验证是否和某个字段的值是否不同
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->different($value, $rule, $data = [])


/**
 * 验证是否大于等于某个值
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->egt($value, $rule, $data = [])


/**
 * 验证是否大于某个值
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->gt($value, $rule, $data = [])


/**
 * 验证是否小于等于某个值
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->elt($value, $rule, $data = [])


/**
 * 验证是否小于某个值
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->lt($value, $rule, $data = [])


/**
 * 验证是否等于某个值
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->eq($value, $rule)


/**
 * 必须验证
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->must($value, $rule = NULL)


/**
 * 验证字段值是否为有效格式
 * @access public
 * @param mixed  $value 字段值
 * @param string $rule  验证规则
 * @param array  $data  数据
 * @return bool
 */
Validate->is($value, $rule, $data = [])



$this->getImageType($image)


/**
 * 验证表单令牌
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->token($value, $rule, $data)


/**
 * 验证是否为合格的域名或者IP 支持A,MX,NS,SOA,PTR,CNAME,AAAA,A6, SRV,NAPTR,TXT 或者 ANY类型
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->activeUrl($value, $rule = 'MX')


/**
 * 验证是否有效IP
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则 ipv4 ipv6
 * @return bool
 */
Validate->ip($value, $rule = 'ipv4')


/**
 * 检测上传文件后缀
 * @access public
 * @param File $file
 * @param array|string $ext 允许后缀
 * @return bool
 */
$this->checkExt($file, $ext)


/**
 * 检测上传文件大小
 * @access public
 * @param File$file
 * @param integer $size 最大大小
 * @return bool
 */
$this->checkSize($file, $size)


/**
 * 检测上传文件类型
 * @access public
 * @param File $file
 * @param array|string $mime 允许类型
 * @return bool
 */
$this->checkMime($file, $mime)


/**
 * 验证上传文件后缀
 * @access public
 * @param mixed $file 上传文件
 * @param mixed $rule 验证规则
 * @return bool
 */
Validate->fileExt($file, $rule)


/**
 * 验证上传文件类型
 * @access public
 * @param mixed $file 上传文件
 * @param mixed $rule 验证规则
 * @return bool
 */
Validate->fileMime($file, $rule)


/**
 * 验证上传文件大小
 * @access public
 * @param mixed $file 上传文件
 * @param mixed $rule 验证规则
 * @return bool
 */
Validate->fileSize($file, $rule)


/**
 * 验证图片的宽高及类型
 * @access public
 * @param mixed $file 上传文件
 * @param mixed $rule 验证规则
 * @return bool
 */
Validate->image($file, $rule)


/**
 * 验证时间和日期是否符合指定格式
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->dateFormat($value, $rule)


/**
 * 验证是否唯一
 * @access public
 * @param mixed  $value 字段值
 * @param mixed  $rule  验证规则 格式:数据表,字段名,排除ID,主键名
 * @param array  $data  数据
 * @param string $field 验证字段名
 * @return bool
 */
Validate->unique($value, $rule, $data = [], $field = '')


/**
 * 使用filter_var方式验证
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->filter($value, $rule)


/**
 * 验证某个字段等于某个值的时候必须
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->requireIf($value, $rule, $data = [])


/**
 * 通过回调方法验证某个字段是否必须
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->requireCallback($value, $rule, $data = [])


/**
 * 验证某个字段有值的情况下必须
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->requireWith($value, $rule, $data = [])


/**
 * 验证某个字段没有值的情况下必须
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->requireWithout($value, $rule, $data = [])


/**
 * 验证是否在范围内
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->in($value, $rule)


/**
 * 验证是否不在某个范围
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->notIn($value, $rule)


/**
 * between验证数据
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->between($value, $rule)


/**
 * 使用notbetween验证数据
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->notBetween($value, $rule)


/**
 * 验证数据长度
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->length($value, $rule)


/**
 * 验证数据最大长度
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->max($value, $rule)


/**
 * 验证数据最小长度
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->min($value, $rule)


/**
 * 验证日期
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->after($value, $rule, $data = [])


/**
 * 验证日期
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->before($value, $rule, $data = [])


/**
 * 验证日期
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->afterWith($value, $rule, $data = [])


/**
 * 验证日期
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @param array $data  数据
 * @return bool
 */
Validate->beforeWith($value, $rule, $data = [])


/**
 * 验证有效期
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->expire($value, $rule)


/**
 * 验证IP许可
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->allowIp($value, $rule)


/**
 * 验证IP禁用
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则
 * @return bool
 */
Validate->denyIp($value, $rule)


/**
 * 使用正则验证数据
 * @access public
 * @param mixed $value 字段值
 * @param mixed $rule  验证规则 正则规则或者预定义正则名
 * @return bool
 */
Validate->regex($value, $rule)


/**
 * 获取错误信息
 * @return array|string
 */
Validate->getError()


/**
 * 获取数据值
 * @access protected
 * @param array  $data 数据
 * @param string $key  数据标识 支持二维
 * @return mixed
 */
$this->getDataValue($data, $key)


/**
 * 获取验证规则的错误提示信息
 * @access protected
 * @param string $attribute 字段英文名
 * @param string $title 字段描述名
 * @param string $type  验证规则名称
 * @param mixed  $rule  验证规则数据
 * @return string|array
 */
$this->getRuleMsg($attribute, $title, $type, $rule)


/**
 * 获取验证规则的错误提示信息
 * @access protected
 * @param string $msg   错误信息
 * @param mixed  $rule  验证规则数据
 * @param string $title 字段描述名
 * @return string|array
 */
$this->parseErrorMsg($msg, $rule, $title)


/**
 * 错误信息数组处理
 * @access protected
 * @param array $msg   错误信息
 * @param mixed  $rule  验证规则数据
 * @param string $title 字段描述名
 * @return array
 */
$this->errorMsgIsArray($msg, $rule, $title)


/**
 * 获取数据验证的场景
 * @access protected
 * @param string $scene 验证场景
 * @return void
 */
$this->getScene($scene)


/**
 * 动态方法 直接调用is方法进行验证
 * @access public
 * @param string $method 方法名
 * @param array  $args   调用参数
 * @return bool
 */
Validate->__call($method, $args)

View

$View = new View();

/**
 * 获取模板引擎
 * @access public
 * @param string $type 模板引擎类型
 * @return $this
 */
View->engine($type = NULL)


/**
 * 模板变量赋值
 * @access public
 * @param string|array $name  模板变量
 * @param mixed$value 变量值
 * @return $this
 */
View->assign($name, $value = NULL)


/**
 * 视图过滤
 * @access public
 * @param Callable $filter 过滤方法或闭包
 * @return $this
 */
View->filter($filter = NULL)


/**
 * 解析和获取模板内容 用于输出
 * @access public
 * @param string $template 模板文件名或者内容
 * @param array  $vars 模板变量
 * @return string
 * @throws \Exception
 */
View->fetch($template = '', $vars = [])


/**
 * 渲染内容输出
 * @access public
 * @param string $content 内容
 * @param array  $vars模板变量
 * @return string
 */
View->display($content, $vars = [])


/**
 * 获取模板引擎渲染内容
 * @param $callback
 * @return string
 * @throws \Exception
 */
$this->getContent($callback)


/**
 * 模板变量赋值
 * @access public
 * @param string $name  变量名
 * @param mixed  $value 变量值
 */
View->__set($name, $value)


/**
 * 取得模板显示变量的值
 * @access protected
 * @param string $name 模板变量
 * @return mixed
 */
View->__get($name)


/**
 * 检测模板变量是否设置
 * @access public
 * @param string $name 模板变量名
 * @return bool
 */
View->__isset($name)



$this->resolveConfig($name)


/**
 * 默认驱动
 * @return string|null
 */
View->getDefaultDriver()


/**
 * 获取驱动实例
 * @param null|string $name
 * @return mixed
 */
$this->driver($name = NULL)


/**
 * 获取驱动实例
 * @param string $name
 * @return mixed
 */
$this->getDriver($name)


/**
 * 获取驱动类型
 * @param string $name
 * @return mixed
 */
$this->resolveType($name)


/**
 * 获取驱动类
 * @param string $type
 * @return string
 */
$this->resolveClass($type)


/**
 * 获取驱动参数
 * @param $name
 * @return array
 */
$this->resolveParams($name)


/**
 * 创建驱动
 *
 * @param string $name
 * @return mixed
 *
 */
$this->createDriver($name)


/**
 * 移除一个驱动实例
 *
 * @param array|string|null $name
 * @return $this
 */
View->forgetDriver($name = NULL)


/**
 * 动态调用
 * @param string $method
 * @param array  $parameters
 * @return mixed
 */
View->__call($method, $parameters)