Download the PHP package kwin/yrphp-core without Composer
On this page you can find all versions of the php package kwin/yrphp-core. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package yrphp-core
[TOC]
简介
yrPHP运用大量的单例及工厂模式,确保用最少的资源做最多的事,采用了composer自动加载,无需手动加载类库文件,还集成了缓存技术及页面静态化技术,确保运行速度及响应速度
安装YrPHP
通过 Composer Create-Project
Git安装
YrPHP拆分为多个仓库,主要包括:
之所以设计为应用和核心仓库分离,是为了支持
Composer
单独更新核心框架。
应用项目:https://github.com/kwinH/YrPHP 核心框架:https://github.com/kwinH/YrPHP-Core
首先克隆下载应用项目仓库
然后切换到blog
目录下面,再克隆核心框架仓库:
测试
在浏览器中输入地址:
至此,YrPHP已经安装成功。
目录结构
www WEB部署目录(或者子目录)
人口文件
index.php
系统核心常量
常量 | 描述 |
---|---|
ROOT_PATH | 项目根路径绝对路径 |
BASE_PATH | 框架目录绝对路径 |
APP_PATH | 用户项目目录绝对路径 |
CORE_PATH | 框架核心类库目录绝对路径 |
LIBS_PATH | 框架集成常用类库目录绝对路径 |
APP_MODE | 应用模式 |
DEBUG | 是否开启调试模式 (默认false) |
核心
引导启动项
系统在完成基本配置会先运行在Config/config.php
文件中的boots
项中的所有类下面的init
方法。
你可以在此做一些配置及预处理。
路由
在引导启动项中载入路由配置文件
基本路由
你可以在 Config/routes.php
文件中定义应用程序的大多数路由,最基本的YrPHP 路由仅接受 URI 和一个闭包
:
为多重动作注册路由
有时候你可能需要注册一个可响应多个 HTTP 动作的路由。这时可通过 Route
的 match
方法来实现:
或者,你甚至可以通过 any
方法来使用注册路由并响应所有的 HTTP 动作:
基础路由参数
有时候你可能需要从 URI 中获取一些参数。例如,从 URL 获取用户的 ID。这时可通过自定义路由参数来获取:
你可以依照路由需要,定义任意数量的路由参数:
路由的参数都会被放在「大括号」内。当运行路由时,参数会通过路由闭包
来传递。
可选的路由参数
有时候你需要指定路由参数的默认值,可以在参数名称后面加上 ='value'
来实现:
正则表达式限制参数
你可以使用 pattern
参数来限制路由参数格式。pattern
参数为一个数组,以名称为key,以定义参数应该如何被限制的正则表达式为value:
全局限制
如果你希望路由参数可以总是遵循正则表达式,则可以使用 pattern
方法。
模式一旦被定义,便会自动应用到所有后续使用该参数名称的路由上:
命名路由
命名路由让你可以更方便的为特定路由生成 URL 或进行重定向。你可以使用 as
数组键指定名称到路由上:
还可以指定路由名称到控制器动作:
路由群组和命名路由
如果你使用了 [路由群组],那么你可以在路由群组的属性数组中指定一个 as
关键字,这将允许你为路由群组中的所有路由设置相同的前缀名称:
对命名路由生成 URLs
一旦你在指定的路由中分配了名称,则可通过 route
函数来使用路由名称生成 URLs 或重定位:
如果路由定义了参数,那么你可以把参数作为第二个参数传递给 route
方法。指定的参数将自动加入到 URL 中:
路由群组
路由群组允许你共用路由属性,例如:中间件、命名空间,你可以利用路由群组统一为多个路由设置共同属性,而不需在每个路由上都设置一次。共用属性被指定为数组格式,当作 Route::group
方法的第一个参数。
为了了解更多路由群组的相关内容,我们可通过几个常用样例来熟悉这些特性。
中间件
指定中间件到所有群组内的路由中,则可以在群组属性数组里使用 middleware
参数。中间件将会依照列表内指定的顺序运行:
命名空间
另一个常见的例子是,指定相同的 PHP 命名空间给控制器群组。可以使用 namespace
参数来指定群组内所有控制器的命名空间:
路由前缀
通过路由群组数组属性中的 prefix
,在路由群组内为每个路由指定的 URI 加上前缀。例如,你可能想要在路由群组中将所有的路由 URIs 加上前缀 admin
:
你也可以使用 prefix
参数去指定路由群组中共用的参数:
RESTful 资源控制器
这一条路由声明会创建多个路由,用来处理各式各样和相片资源相关的的 RESTful 行为。同样地,生成的控制器有着各种和这些行为绑定的方法,包含要处理的 URI 及方法对应的注释。
由资源控制器处理的行为
动词 | 路径 | 行为(方法) | 路由名称 |
---|---|---|---|
GET | /photos |
index | photos.index |
GET | /photos/create |
create | photos.create |
POST | /photos |
save | photos.save |
GET | /photos/{photo} |
show | photos.show |
GET | /photos/{photo}/edit |
edit | photos.edit |
PUT/PATCH | /photos/{photo} |
update | photos.update |
DELETE | /photos/{photo} |
delete | photos.delete |
部分资源路由
声明资源路由时,你可以指定让此路由仅处理一部分的行为:
命名资源路由
所有的资源控制器行为默认都有路由名称;不过你可以在选项中传递一个 names
数组来重写这些名称:
嵌套资源
有时你可能会需要定义「嵌套」资源路由。例如,相片资源可能会附带多个「评论」。要「嵌套」此资源控制器,可在路由声明中使用「点」记号:
此路由会注册一个「嵌套」资源,可通过类似的 URL 来访问它:photos/{photos}/comments/{comments}
。
附加资源控制器
如果想在资源控制器中默认的资源路由之外加入其它额外路由,则应该在调用 Route::resource
之前 定义这些路由。否则,由 resource
方法定义的路由可能会不小心覆盖你附加的路由:
隐式控制器
YrPHP让你能够轻易地通过定义单个路由来处理控制器类中的各种行为。首先,使用 Route::controller
方法来定义路由。controller
方法接受两个参数。第一个参数是控制器所处理的基本 URI,第二个是控制器的类名称:
接下来,只要在控制器中加入方法。方法的名称应由它们所响应的 HTTP 动词作为开头,紧跟着首字母大写的 URI 所组成:
正如你在上述例子中所看到的,index
方法会响应控制器所处理的根 URI,在这个例子中是 users
。
YrPHP的Route会从上至下解析,直到找到方法就不会继续解析其他方法,所以要注意方法的顺序。
分派路由名称
如果你想要 命名
控制器中的某些路由,你可以在 controller
方法中传入一个名称数组作为第三个参数:
路由缓存
若你的应用程序完全通过控制器使用路由,你可以利用 YrPHP的路由缓存。使用路由缓存可以大幅降低注册全部路由所需的时间。在某些情况下,你的路由注册甚至可以快上一百倍!要生成路由缓存,只要运行 route cache
此 Artisan 命令:
这就可以了!现在你的缓存路由文件将被用来代替 Config/routes.php
这一文件。请记得,若你添加了任何新的路由,就必须生成新的路由缓存。因此你可能希望只在你的项目部署时才运行 route cache
这一命令。
要移除缓存路由文件而不生成新的缓存,请使用 route clear
命令:
URI
获得URL
getUrl($url,$indexPage);//如果参数为空 则返回现在所在所在的根目录如
http://example.com/index.php/news/index/id
则返回http://example.com/
否则返回拼接后的URL/**
* @param string $url URL表达式,格式:'[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...'
* @param bool|true $indexPage 如果是REWRITE重写模式 可以不必理会 否则默认显示index.php
* @return string
*/
默认情况下,index.php 文件将被包含在你的 URL 中: example.com/index.php/news/article/my_article
你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“negative”方法将非指定内容进行重定向:
在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。
添加 URL 后缀
通过设置 config/config.php 文件,你可以为 yrphp 生成的 URL 添加一个指定的文件后缀。举例来说,如果 URL 是这样的:
example.com/index.php/products/view/shoes
你可以随意添加一个后缀,例如 .html,使其显示为:
example.com/index.php/products/view/shoes.html
你只需修改config/config.php 文件中
cli命令行模式
实现代码提示、跟踪和自动补全
参数必须是3个及以上,artisan是入口文件,ide-help是config/commands.php中类的key值(也可以说是类别名),也可以是控制器名(多目录用
/
分开)。generate是方法名,其他参数都做为调用的方法的参数
中间件
HTTP 中间件提供了一个方便的机制来过滤进入应用程序的 HTTP 请求,在一个请求真正处理前,我们可能会对请求做各种各样的判断,然后才可以让它继续传递到更深层次中。
创建一个中间件
中间件一般放在App/Middleware目录下,如下就要一个名为App/Middleware/Auth.php的中间件,该中间件实现了如果用户还没登录,则跳转到登录页面,否则调用
$next($request)
继续执行(相当于允许通过中间件)
前置 & 后置中间件
中间件是在请求之前或之后运行取决于中间件本身。例如,以下的中间件会在应用处理请求 之前 执行一些任务:
而下面(这种写法的)中间件会在应用处理请求 之后 执行其任务:
调用
1、你可以在App/Boots/AddMiddleware.php文件中配置
可以使用与单个中间件相同的语法将中间件组分配给路由和控制器操作。重申一遍,中间件组只是更方便地实现了一次为路由分配多个中间件。
2、也可以在控制器中单独调用
middleware(\$middleware, array \$options = []) \$middleware参数为中间件别名,\$options 为过滤条件,['except'=>['login']]代表调用login方法不调用该中间件,其他都要调用该中间件,['only'=>['content']]代表仅调用content方法时调用该中间件,其他都不要调用该中间件。
控制器
例子:创造一个控制器 在APP目录下的Controller目录下创建一个名为: UserController.php的文件
你可以这样定义一个指向该控制器行为的路由:
现在,当一个请求与此指定路由的 URI 匹配时, UserController
类的 show
方法就会被执行。当然,路由参数也会被传递至该方法。
接着我们用浏览器打开 example.com/index.php/user/1 就可以看到 Hello World 1
依赖注入
当调用控制器时会自动填充参数,如上$request为Request类,$id为URL多于字段的第一个,$name为多于字段第二个,以此类推 如访问example.com//test/index/1/kwin?s=2&page=3 $data=['s'=>2,'page'=>3],$id=1,$name='kwin'
配置
默认的配置文件在BASE_PATH/config/config.php 如需修改相关配置
如果设置了APP_MODE 则在APP_PATH/config_APP_MODE.php中修改相关配置 否则 在APP_PATH/config_APP.php中修改相关配置
yrPHP框架中所有配置文件的定义格式均采用返回PHP数组的方式,格式为:
读取配置
无论何种配置文件,定义了配置文件之后,都统一使用系统提供的C方法(可以借助Config单词来帮助记忆)来读取已有的配置。
获取已经设置的参数值:config('参数名称')
除config.php文件外,其他文件可以用config('fileName.param')获取
如果charset
尚未存在设置,则返回NULL。
支持设置默认值例如:
如果不传参数 则返回所有配置信息
动态配置
设置新的值 如果存在则覆盖,否则新建:
批量设置:
加载配置文件
视图
配置
加载视图
display($fileName, $tplVars = '', $cacheId = '');
$fileName 提供模板文件的文件名 $tpl_var 动态数据 $cacheId 当$cacheId为false时,不会生成缓存文件,其他情况做为缓存ID,当有个文件有多个缓存时,$cacheId不能为空,否则会重复覆盖
上面的 name 便是你的视图文件的名字 如 index.html。
给视图添加动态数据
视图缓存
以下参数可用于视图缓存
模版
模版继承
控制器中调用
定义页面布局layout.php
继承页面布局 index.php
由于layout中没有test内容区块 所以section test中的内容不会显示
test.php
最后解析成:
变量输出
在模板中输出变量的方法很简单,例如,在控制器中我们给模板变量赋值:
模板编译后的结果就是:
输出函数返回值
注意模板标签的
{
和=
之间不能有任何的空格,否则标签无效。
运算符
包含文件
赋值
注意模板标签的
assign
和$
之间必须有空格,否则标签无效。
将函数赋值
判断
循环
foreach
for
while
使用php代码
自定义标签
在配置文件tabLib.php文件中自定义标签
使用
在模版中调用
表单
实例:
开启表单
默认表单使用 POST 方法,当然您也可以指定传参其他表单的方法
当填写第二个参数$data(模型)时,当您产生表单元素时,如 text 字段,模型的值将会自动比对到字段名称,并设定此字段值,举例来说,用户模型的 email
属性,将会设定到名称为 email
的 text 字段的字段值,不仅如此,当 Session 中有与字段名称相符的名称, Session 的值将会优先于模型的值,而优先顺序如下:
- Session 的数据 (旧的输入值)
- 明确传递的数据
- 模型属性数据
这样可以允许您快速地建立表单,不仅是绑定模型数据,也可以在服务器端数据验证错误时,轻松的回填用户输入的旧数据!
CSRF 保护
YrPHP提供了一个简易的方法,让您可以保护您的应用程序不受到 CSRF (跨网站请求伪造) 攻击。首先YrPHP会自动在用户的 session中放置随机的token,别担心这些会自动完成。如果你调用了=form::open方法,这个 CSRF 参数会用隐藏字段的方式自动加到您的表单中。另外,您也可以使用 token 方法去产生这个隐藏的 CSRF 字段的 HTML 标签:
标签(Label)
注意: 在建立标签时,任何您建立的表单元素名称与标签相符时,将会自动在 ID 属性建立与标签名称相同的 ID。
文字字段
默认ID为字段名,如上如果没有在第二个参数中指定ID,则ID为name
多行文本域
size 50为cols,10为rows,cols和rows默认就是50*10
密码字段
隐藏域
复选框、单选按钮
第四个参数为是否默认选中
下拉框
按钮
事件系统
Laravel 应用中的App\Boots\EventBoot
提供了一个很方便的地方来注册所有的事件监听器。它的 listen
属性是一个数组,包含所有的事件(键)以及事件对应的监听器(值)。你也可以根据应用需求来增加事件到这个数组中。例如,增加一个 ViewLog
事件:
手动注册事件
启动监听器
启动监听器,如果是个类则会访问该类下的
handle
方法,如果是个匿名函数, 则会调用这个匿名函数 ,第二个参数是个数组是可以传入给匿名的参数
事件订阅者
事件订阅者是一个在自身内部可以订阅多个事件的类,允许你在单个类中定义多个事件处理器。订阅者应该定义一个
subscribe
方法,这个方法接受一个事件分发器的实例。你可以调用事件分发器的listen
方法来注册事件监听器:
注册事件订阅者
一旦订阅者被定义,它就可以被注册到事件分发器中。你可以在 App\Boots\EventBoot
类的 $subscribe
属性注册订阅者。例如,添加 UserEventSubscriber
到列表中:
数据库
数据库配置
数据库配置模版文件在BASE_PATH/config/database.php 如需修改相关配置
在APP_PATH/database.php中修改相关配置
数据库请求构建器
添加数据INSERT
insert(array $data);
删除数据DELETE
delete($where = []);
条件为array|string 推荐array
修改数据
update($data=[],$where=[])
条件为array|string 推荐array
查询数据
GET
*get($field = '')**
return YrPHP\Database\Collection
SELECT
select($field =[],[...])
$field string|array 字段 ,多个参数
EXCEPT
except($field = []) 查询tableName表(默认$this->tableName)除了$field外所有字段 $field array 字段
LIMIT
limit($offset, $length = null) $offset 起始位置 $length 查询数量
WHERE
where($where = '', $logical = "and")
@param $logical 与前一个条件的连接符 @param $where string|array string "id>'100'"
->
where id>'100'**array($field=>$value)
例: ['id'=>1,'or id'=>2,'age >'=>15,'or id in'=>[1,2,3,4,5]]
$value 值 array|Closure|string|int|null field可以用空格分开,与连接符、字段名、运算符组成 运算符 =|!=|<>|>|<|like|is|between|not between|in|not in 连接符 or|and 与前一个条件的连接符 默认调用
$logical
where 可以用连贯查询 一组where会用
()
包含
ORDER
GROUP
HAVING
同WHERE
JOIN
join($table, $cond, $type = '', $auto = true) @param $table 表名 @param $cond 连接条件 同where @param string $type 连接方式
聚合查询
统计COUNT
count()
最大值MAX
max()
最小值MIN
min()
累计值SUM
sum()
平均值SUM
sum()
query 操作SQL
事务
要使用事务来运行你的查询, 你可以使用如下方法:
- startTrans(); 开启事务
- transComplete(); 自动判断错误 提交或则回滚
- commit(); 事务提交
- rollback(); 事务回滚
或则
数据缓存
数据库缓存
在配置文件中配置数据库相关配置
lastQuery() 查询上一条SQL语句
使用多数据库连接
当你使用了多个连接时,则可以通过 setconnection
方法来访问每个连接。传递给 setconnection
方法的 name
必须对应至 config/database.php
配置文件中的连接列表的其中一个:
模型
模型定义
模型类并非必须定义,只有当存在独立的业务逻辑或者属性的时候才需要定义。 文件名为模型名.php
user表
对应的文件名为User.php,如果要修改默认对应的表名,则重写$table属性
模型类通常需要继承系统的YrPHP\Database\Model类或其子类,下面是一个Model\User类的定义:
取回单个模型
取回集合
返回的所有多结果集都是
YrPHP\Database\Collection
对象的实例。所有的集合都可以作为迭代器,可以就像简单的 PHP 数组一样来遍历它们:
新增
更新
删除
数据预处理——访问器和修改器
定义一个访问器
若要定义一个访问器,则必须在你的模型上创建一个 getFooAttribute
方法。要访问的 Foo
字段需使用「驼峰式」来命名。在这个例子中,我们将为 first_name
属性定义一个访问器。当 Model 尝试获取 first_name
的值时,将会自动调用此访问器:
如你所见的,字段原始的值被传递到访问器中,让你可以操作并返回结果。如果要访问被修改的值,则可以像这样来访问 first_name
属性:
定义一个修改器
若要定义一个修改器,则必须在模型上定义一个 setFooAttribute
方法。要访问的 Foo
字段需使用「驼峰式」来命名。让我们再来定义 first_name
属性的修改器。当我们尝试在模型上设置 first_name
的值时,将会自动调用此修改器:
修改器会获取属性已经被设置的值,让你可以操作该值并将其设置到 模型内部的 $attributes
属性上。举个例子,如果我们尝试将 first_name
属性设置成 Sally
:
在这个例子中,setFirstNameAttribute
函数将会使用 Sally
作为参数来调用。修改器会对该名字使用strtolower
函数并将其值返回。
模型关联
一对一
一对一关联是最基本的关联关系。例如,一个 User 模型可能关联一个 Identity 模型。为了定义这个关联,我们要在 User 模型中写一个 identity 方法,在 identity 方法内部调用 hasOne 方法并返回其结果:
定义
关联查找
hasOne 方法的第一个参数是关联模型的类名。关联关系定义好后,我们就可以动态属性获得相关的记录。您可以像在访问模型中定义的属性一样,使用动态属性:
默认会基于模型名决定外键名称。在当前场景中,会假设 Identity 模型有一个 user_id 外键,如果外键名不是这个,可以通过给 hasOne 方法传递第二个参数覆盖默认使用的外键名:
此外,Model会假定外键值是与父级 id(或自定义 $primaryKey)列的值相匹配的。 换句话说,会将在 Phone 记录的 user_id 列中查找与用户表的 id 列相匹配的值。 如果您希望该关联使用 id以外的自定义键名,则可以给 hasOne 方法传递第三个参数:
关联新增
系统会自动把当前模型的主键传入Identity模型表的外键中
多态一对一
多态一对一相比多态一对多关联的区别是动态的一对一关联,举个例子说有一个个人和团队表,而无论个人还是团队都有一个头像需要保存但都会对应同一个头像表
定义
会员模型:
团队模型:
morphOne方法的参数如下:
morphOne('关联模型名','多态字段信息','多态类型','多态外键','多态外键对应关联键名');
关联模型名(必须):关联的模型名称。
多态字段信息(可选):多态字段使用 多态前缀_type和多态前缀_id,默认为当前的关联方法名作为字段前缀。
多态类型字段(可选): 默认type
,与多态字段组合成多态类型字段,多态字段信息_多态类型
多态外键字段(可选): 默认id
,与多态字段组合成多态外键字段,多态字段信息_多态外键
多态外键对应关联键名: 与多态外键字段关联的主键字段名
关联查找
关联新增
系统会把当前模型的
表名
填充到Avatar模型的多态类型字段
上,把当前模型的主键
填充到Avatar模型的多态外键字段
上
一对多
「一对多」关联用于定义单个模型拥有任意数量的其它关联模型。例如,一个人可能会有多张银行卡帐号。
定义
记住,Model 会自动确定 BankCard
模型上正确的外键字段。按照约定,Model 使用父级表名、加上 _id
后缀名作为外键字段。对应到上面的场景,就是 Model 假定 Comment
模型对应到 User
模型上的那个外键字段是 user_id
。
关联查找
关联关系定义好后,我们就可以通过访问 bankCard
属性获得评论集合。记住,因为 Model 提供了「动态属性」,所以我们可以像在访问模型中定义的属性一样,访问关联方法:
当然,由于所有的关联还可以作为查询语句构造器使用,因此你可以使用链式调用的方式、在 comments
方法上添加额外的约束条件:
形如 hasOne
方法,您也可以在使用 hasMany
方法的时候,通过传递额外参数来覆盖默认使用的外键与本地键。
关联新增
系统会自动把当前模型的主键传入BankCard模型表的外键中
远层一对多
「远层一对多」关联提供了方便、简短的方式通过中间的关联来获得远层的关联。例如,一个 Country 模型可以通过中间的 User 模型获得多个 Post 模型。在这个例子中,您可以轻易地收集给定国家的所有博客文章。让我们来看看定义这种关联所需的数据表:
虽然 posts 表中不包含 country_id 字段,但 hasManyThrough 关联能让我们通过 $country->posts 访问到一个国家下所有的用户文章。为了完成这个查询,Model 会先检查中间表 users 的 country_id 字段,找到所有匹配的用户 ID 后,使用这些 ID,在 posts 表中完成查找。
定义
现在,我们已经知道了定义这种关联所需的数据表结构,接下来,让我们在 Country 模型中定义它:
hasManyThrough 方法的第一个参数是我们最终希望访问的模型名称,而第二个参数是中间模型的名称。
当执行关联查询时,通常会使用 Eloquent 约定的外键名。如果您想要自定义关联的键,可以通过给 hasManyThrough 方法传递第三个和第四个参数实现,第三个参数表示中间模型的外键名,第四个参数表示最终模型的外键名。第五个参数表示本地键名,而第六个参数表示中间模型的本地键名:
多对多
例如,我们的用户和角色就是一种多对多的关系,我们在User模型定义如下: belongsToMany('关联模型名','中间表名','关联外键','中间表名关联外键');
关联关系定义好后,我们就可以通过 roles 动态属性获得用户的角色了:
当然,如同所有其它的关联类型,您可以调用 roles 方法,利用链式调用对查询语句添加约束条件:
表单验证
系统函数
创造自己的类库
将你自己的 .php 文件放入APP_PATH
/Libs
文件的命名规则为类名.php
采用大驼峰命名法命名方
例:
在
APP_PATH
/Libs文件夹中新建一个名问MyPage.php的类文件在控制器中调用
loadClass($className)以单例模式实例化类
请确保类名正确 区分大小写
系统类库(YrPHP/Libs)
所有系統类都注冊了别名,可以直接在控制器中用
别名::方法名()
来调用 如:crypt::encrypt($str)
当然自定义的类,在Config/class_alias.php中注册了别名,也可以这样调用
加密类 Crypt
配置密钥
在
APP_PATH
.config/config.php下配置
加密解密
数组类
文件处理类 File
文件上传类 Uoload
支持多文件上传
上传配置设置
key | 值选项 | 说明 |
---|---|---|
maxSize | int | 最大的上传文件 KB 默认为0 不限制 注意:通常PHP也有这项限制,可以在php.ini文件中指定。通常默认为2MB。 |
savePath | / |
上传目录 默认/ 根目录 |
fileName | None | 自定义上传文件后的名称,不含文件后缀 |
allowedTypes | array() | 允许上传文件的后缀列表默认空数组为允许所有 |
isRandName | BOOL | 设置是否随机重命名文件, false不随机 默认 true |
overwrite | BOOL | 是否覆盖。true则覆盖,false则重命名 默认false |
init($config)参数初始化
uploadFile($field)文件上传
@param 表单名称 $field,上传文件的表单名称 如果为空则上传 $_FILES数组中所有文件
getFileInfo($inputName=null);获得上传文件相关属性
inputName 表单名 如果为多文件上传 则在表单名后面跟下标 如果inputName==null 则返回一个以表单名为键的多维数组 return array(inputName1=>array(),inputName2=>array(),...)
如果inputName表单名不为空 则返回该表单上传的文件信息 如果表单名错误 则 返回false
如果上传文件有错误 则return array('errorCode'=>错误代码)
否则 return 包括以下单元的数组 array :fileName(最终文件名包含后缀)、fileType(文件mime类型)、filePath(包含文件名的完整路径)、origName(上传前的文件名)、fileExt(文件后缀)、 fileSize(文件大小KB)、isImage(是否是图片bool)、imgWidth(图片宽度)、imgHeight(图片高度)
getError($errorCode = null)
$errorCode 根据错误代码获得上传出错信息
图像处理类 Image
支持连贯操作
缩略图
水印
剪辑
CURL类 Curl
支持连贯操作
验证码类 VerifyCode
分页类
生成样式
验证类 Validate
购物车类 Cart
Email 类 PHPMailer
`