插件 es-thinkphp

es-thinkphp 是对thinkphp框架的实现。内置了thinkphp的语法描述文件。

选项配置

在初始化工程时会根据选择的插件自动生成选项配置。

es.config.js

module.exports = {
plugins:[{
    name:"es-thinkphp",
    options:{
        //生成路由的文件名
        routeFileName:'app',
        //生成路由路径时是否需要使用命名空间名
        routePathWithNamespace:false,
        //格式化
        formation:{
            /**
            * 需要对路由进行格式化,常用的是统一大小写或者特定格式
            *@type function (url, {
            *    action:string,
            *    pathArg:string,
            *    method:string,
            *    params:string,
            *    className:string
            * }):string
            */
            route:null
        },
        //定位资源
        resolve:{
            //所有以 server/** 开头的资源都使用 use 引入 
            usings:['server/**'],
            //定位目录
            folders:{
                //所有全局的模块都定位到 escore 目录
                "*.global":"escore",
                //所有路由文件都定位到 route 目录
                '*.route':'route',
                //所有语言文件都定位到 app/lang/** 目录下
                'lang/***':'app/lang/{...}',
                //所有console文件都定位到 app/console/** 目录下
                'console/***':'app/console/{...}',
                //所有middleware文件都定位到 app/middleware/** 目录下
                'middleware/***':'app/middleware/{...}',
                //所有http文件都定位到 app/http/** 目录下
                'http/***':'app/http/{...}',
                //所有model文件都定位到 app/model/** 目录下
                'model/***':'app/model/{...}',
                //所有assets文件都定位到 assets/** 目录下
                'assets/***':'static/{...}',
                //所有config文件都定位到 config/** 目录下
                'config/***':'config/{...}',
            },
            //定位一个文件的类型, 比如 *.route *.global 就是类型。一般不需要配置
            types:{},
            //根据指定的命名空间解析到一个新的命名空间
            namespaces:{
                //将指定的命名空间解析为 think
                'server/database/DbManager':'think',
                'server/database/Paginator':'think',
                //将指定的命名空间解析为 think/db/BaseQuery
                'server/database/concern/BaseQuery':'think/db/BaseQuery',
                //将指定的 server/database 开头的空间解析为 think/db/**
                'server/database/**':'think/db/{...}',
                'server/model/Model':'think',
                'server/model/**':'think/model/{...}',
                'server/facade/*':'think/facade',
                'server/route/**':'think/route/{...}',
                'server/response/**':'think/response/{...}',
                'server/event/**':'think/event/{...}',
                "server/console/**": "think/console/{...}",
                "server/driver/**":"think/filesystem/{...}",
                'server/kernel/*':'think'
            }
        },
        //是否把目录当作命名空间
        folderAsNamespace:true,
        //构建资产时的存放目录
        publicPath:'public',
        //一个路径字符串数组,判断是否为外部依赖,外部依赖不会被生成文件
        externals:[],
        //一个正则或者字符串的数组,在导入文件时判断是否需要排除
        excludes:[],
        //一个路径字符串数组,在构建时默认构建这些文件
        includes:[]
    }
}]}

所有类及命名空间

请查看插件根目录 "types/server" 下的描述声明文件,文件目录对应为命名空间,描述文件中定义的类为thinkphp中已实现的类

全局方法

/**
* 获取环境变量值
* @access public
* @param string $name    环境变量名(支持二级 .号分割)
* @param string $default 默认值
* @return mixed
*/
declare function env<T=ScalarValue | ScalarValue[]>(name:string,defaultValue?:any):T;

/**
* 抛出HTTP异常
* @param integer|Response $code    状态码 或者 Response对象实例
* @param string           $message 错误信息
* @param array            $header  参数
*/
declare function abort(code:server.kernel.Response | number , message?:string, header?:ArrayMapping<ScalarValue>):void;

/**
* 快速获取容器中的实例 支持依赖注入
* @template T
* @param string|class-string<T> $name        类名或标识 默认获取当前应用实例
* @param array                  $args        参数
* @param bool                   $newInstance 是否每次创建新的实例
* @return T|object|App
*/
declare function app(name:string, args?:any[], newInstance?:boolean):any;
declare function app(name:'app', args?:any[], newInstance?:boolean):server.kernel.App;
declare function app(name:'cache', args?:any[], newInstance?:boolean):server.kernel.Cache;
declare function app(name:'config', args?:any[], newInstance?:boolean):server.kernel.Config;
declare function app(name:'console', args?:any[], newInstance?:boolean):server.kernel.Console;
declare function app(name:'cookie', args?:any[], newInstance?:boolean):server.kernel.Cookie;
declare function app(name:'db', args?:any[], newInstance?:boolean):server.kernel.Db;
declare function app(name:'env', args?:any[], newInstance?:boolean):server.kernel.Env;
declare function app(name:'event', args?:any[], newInstance?:boolean):server.kernel.Event;
declare function app(name:'http', args?:any[], newInstance?:boolean):server.kernel.Http;
declare function app(name:'lang', args?:any[], newInstance?:boolean):server.kernel.Http;
declare function app(name:'log', args?:any[], newInstance?:boolean):server.kernel.Log;
declare function app(name:'middleware', args?:any[], newInstance?:boolean):server.kernel.Middleware;
declare function app(name:'request', args?:any[], newInstance?:boolean):server.kernel.Request;
declare function app(name:'response', args?:any[], newInstance?:boolean):server.kernel.Response;
declare function app(name:'route', args?:any[], newInstance?:boolean):server.kernel.Route;
declare function app(name:'session', args?:any[], newInstance?:boolean):server.kernel.Session;
declare function app(name:'validate', args?:any[], newInstance?:boolean):server.kernel.Validate;
declare function app(name:'view', args?:any[], newInstance?:boolean):server.kernel.View;
declare function app(name:'filesystem', args?:any[], newInstance?:boolean):server.kernel.Filesystem;
declare function app():server.kernel.App;


/**
* 绑定一个类到容器
* @param string|array $abstract 类标识、接口(支持批量绑定)
* @param mixed        $concrete 要绑定的类、闭包或者实例
* @return Container
*/
declare function bind(abstracts:class<any>|class<any>[], concrete?:class<any>|(...args)=>void):server.kernel.Container

/**
* 缓存管理
* @param string $name    缓存名称
* @param mixed  $value   缓存值
* @param mixed  $options 缓存参数
* @param string $tag     缓存标签
* @return mixed
*/
declare function cache(name?:string, value?:any, options?, tag?:string):any;

/**
* 获取和设置配置参数
* @param string|array $name  参数名
* @param mixed        $value 参数值
* @return mixed
*/
declare function config(name:string|string[], value?):any;

/**
* Cookie管理
* @param string $name   cookie名称
* @param mixed  $value  cookie值
* @param mixed  $option 参数
* @return mixed
*/
declare function cookie(name?:string, value?, option?):any;

/**
* 获取\think\response\Download对象实例
* @param string $filename 要下载的文件
* @param string $name     显示文件名
* @param bool   $content  是否为内容
* @param int    $expire   有效期(秒)
* @return \think\response\File
*/
declare function download(filename:string, name?:string, content?:boolean, expire?:number): server.response.File

/**
* 浏览器友好的变量输出
* @param mixed $vars 要输出的变量
* @return void
*/
declare function dump(...vars):void;

/**
* 触发事件
* @param mixed $event 事件名(或者类名)
* @param mixed $args  参数
* @return mixed
*/
declare function event(event:string, $args?):any;

/**
* 调试变量并且中断输出
* @param mixed $vars 调试变量或者信息
*/
declare function halt(...vars):void;

/**
* 获取输入数据 支持默认值和过滤
* @param string $key     获取的变量名
* @param mixed  $default 默认值
* @param string $filter  过滤方法
* @return mixed
*/
declare function input(key?:string, default?, filter:(...args)=>boolean):any;

/**
* 调用反射实例化对象或者执行方法 支持依赖注入
* @param mixed $call 类名或者callable
* @param array $args 参数
* @return mixed
*/
declare function invoke(call:(...args)=>any, args?:array ):any;

/**
* 获取\think\response\Json对象实例
* @param mixed $data    返回的数据
* @param int   $code    状态码
* @param array $header  头部
* @param array $options 参数
* @return \think\response\Json
*/
declare function json<T=any>(data:T, code?:number, header?:{[key:string]:string}, options?:array): server.response.Json<T>

/**
* 获取\think\response\Jsonp对象实例
* @param mixed $data    返回的数据
* @param int   $code    状态码
* @param array $header  头部
* @param array $options 参数
* @return \think\response\Jsonp
*/
declare  function jsonp<T=any>(data:T, code?:number, header?:{[key:string]:string}, options?:array): server.response.Jsonp<T>

/**
* 获取语言变量值
* @param string $name 语言变量名
* @param array  $vars 动态变量值
* @param string $lang 语言
* @return mixed
*/
declare function lang(name:string, vars:array, lang?:string):any;

/**
* 字符串命名风格转换
* type 0 将Java风格转换为C的风格 1 将C风格转换为Java的风格
* @param string $name    字符串
* @param int    $type    转换类型
* @param bool   $ucfirst 首字母是否大写(驼峰规则)
* @return string
*/
declare function parse_name(name:string, type:number, ucfirst?:boolean): string

/**
* 获取\think\response\Redirect对象实例
* @param string $url  重定向地址
* @param int    $code 状态码
* @return \think\response\Redirect
*/
declare  function redirect(url:string, code?:number): server.response.Redirect<string>

/**
* 获取当前Request对象实例
* @return Request
*/
declare  function request(): server.kernel.Request

/**
* 创建普通 Response 对象实例
* @param mixed      $data   输出数据
* @param int|string $code   状态码
* @param array      $header 头信息
* @param string     $type
* @return Response
*/
declare function response<T=any>(data:T, code?:number, header?:{[key:string]:string}, type?:string): server.kernel.Response<T>

/**
* Session管理
* @param string $name  session名称
* @param mixed  $value session值
* @return mixed
*/
declare  function session(name:string, value?):any

/**
* 获取Token令牌
* @param string $name 令牌名称
* @param mixed  $type 令牌生成方法
* @return string
*/
declare function token(name?:string, type?:string): string

/**
* 生成令牌隐藏表单
* @param string $name 令牌名称
* @param mixed  $type 令牌生成方法
* @return string
*/
declare function token_field(name?:string, type?:string): string

/**
* 生成令牌meta
* @param string $name 令牌名称
* @param mixed  $type 令牌生成方法
* @return string
*/
declare function token_meta(name?:string, type?:string): string

/**
* 记录日志信息
* @param mixed  $log   log信息 支持字符串和数组
* @param string $level 日志级别
* @return array|void
*/
declare function trace(log?:string, level?:string ):array

/**
* Url生成
* @param string      $url    路由地址
* @param array       $vars   变量
* @param bool|string $suffix 生成的URL后缀
* @param bool|string $domain 域名
* @return UrlBuild
*/
declare function url(url:string, vars?:array, suffix?:boolean, domain?:boolean): server.route.Url;

/**
* 生成验证对象
* @param string|array $validate      验证器类名或者验证规则数组
* @param array        $message       错误提示信息
* @param bool         $batch         是否批量验证
* @param bool         $failException 是否抛出异常
* @return Validate
*/
declare function validate(validate:string, message?:ArrayMapping<string>, batch?:boolean, failException?:boolean): server.kernel.Validate;
declare function validate(validate:ArrayMapping<ArrayMapping<any>>, message?:ArrayMapping<string>, batch?:boolean, failException?:boolean): server.kernel.Validate;

/**
* 渲染模板输出
* @param string   $template 模板文件
* @param array    $vars     模板变量
* @param int      $code     状态码
* @param callable $filter   内容过滤
* @return \think\response\View
*/
declare function view(template?:string, vars?:array, code?:number, filter:(...args)=>boolean): server.response.View<string>;

/**
* 渲染模板输出
* @param string   $content 渲染内容
* @param array    $vars    模板变量
* @param int      $code    状态码
* @param callable $filter  内容过滤
* @return \think\response\View
*/
declare function display(content?:string, vars?:array, code?:number, filter:(...args)=>boolean): server.response.View<string>

/**
* 获取\think\response\Xml对象实例
* @param mixed $data    返回的数据
* @param int   $code    状态码
* @param array $header  头部
* @param array $options 参数
* @return \think\response\Xml
*/
declare function xml(data:array, code?:number, header?:{[key:string]:string}, options?:array): server.response.Xml<string>

/**
* 获取当前应用目录
*
* @param string $path
* @return string
*/
declare function app_path(path?:string):string

/**
* 获取应用基础目录
*
* @param string $path
* @return string
*/
declare function base_path(path?:string):string

/**
* 获取应用配置目录
*
* @param string $path
* @return string
*/
declare function config_path(path?:string):string

/**
* 获取web根目录
*
* @param string $path
* @return string
*/
declare function public_path(path?:string):string

/**
* 获取应用运行时目录
*
* @param string $path
* @return string
*/
declare function runtime_path(path?:string):string

/**
* 获取项目根目录
*
* @param string $path
* @return string
*/
declare function root_path(path?:string):string