# php300framework1.3.6
**Repository Path**: php300/php300framework1.3.6
## Basic Information
- **Project Name**: php300framework1.3.6
- **Description**: php300框架
- **Primary Language**: PHP
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-11-11
- **Last Updated**: 2021-06-21
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
此版本已停用,请移步至[PHP300Framework2.0](https://github.com/xcg340122/PHP300Framework2.0)
====
[](https://framework.php300.cn/)
[](http://api.php300.cn/313845)
[](https://jq.qq.com/?_wv=1027&k=5exsSYT)
[](http://api.php300.cn/)
### 介绍
为了更好更快的开发WEB程序,PHP300FrameWork基于PHP300云类库的功能上进行开发,遵守开源免费的原则让开发者更好的扩展或使用本程序,随着PHP框架的日益增多,我们也融入了当前主流框架的一些性质并且优化的更简单更方便,框架代码简介,让您更容易了解本框架的原理用于自身学习.
1.3.6版本支持中文编码,如果需要更高的性能条件请移步[PHP300Framework2.0](https://github.com/xcg340122/PHP300Framework2.0)
这里展示部分文档,更多介绍请详见:[在线手册](http://api.php300.cn)
### 环境支持
* 支持Windows/Linux服务器环境
* 可运行于包括Apache/Nginx/IIS等WEB服务器和模式 (Nginx中需要设置重定向规则)
* 支持Mysql数据库
### 基本内容
##### 命名空间
在1.3.1版本中新增命名空间,当使用扩展类需要use空间才能正常继承,控制器中需要以实例文件夹名称作为命名空间前缀,例如:Main实例中的APP控制器文件命名:`Main\Action`
例如Admin实例中的控制器则是:`Admin\Action`
#### 控制器
在Action实例项目目录中,我们可以创建多个项目控制器操作,例如:Admin。Home等等,系统默认有个Main项目,我们可以在里面创建控制器文件,下面是一个标准的控制器代码:
```php
`Action`方法用于快速调用外部控制器方法,支持跨实例调用,例如调用Admin实例中的User控制器的getUserInfo方法:
```php
Action('Admin\User')->getUserInfo();
```
> 如果只是调用本实例项目中的方法,则不需要写实例项目名称,直接写控制器名称,例如调用本实例中的Order控制器中的Update方法:
```php
Action('Order')->Update();
```
方法参数:`Action($Name)`
##### Libs方法
###### 使用方法
> `Libs`方法用于返回系统扩展类库对象,可以用来调用系统扩展类库中的操作方法,例如调用File类中的createDir方法:
```php
Libs('File')->createDir('Uploads/Zip/'.date('Ymd'));
```
> 默认返回对象,如果目标类库不存在则会提示错误信息,系统类库文件存在于框架根目录中的Libs\Class中。
方法参数:`Libs($Name)`
##### Config方法
###### 使用方法
> `Config`方法将会返回您的配置文件信息,您可以在Config目录中创建您自己的配置文件信息,其规则为:
```php
return array(
'配置名称' => '配置值'
);
```
> `Config`使用方法:该方法默认需要指定一个配置名称,如果这个名称存在于多个配置文件,则需要指定第二个参数来指定获取配置值,如果两个参数都为空则返回全部的配置信息数组,例如读取Mysql配置文件信息:
```php
$MysqlCon = Config('Mysql','Mysql');
```
方法参数:`Config($key='',$file='')`
##### Receive方法
###### 使用方法
> `Receive`用于获取参数信息,支持的参数类型:`Get`,`Post`,`Put`,`Globals`,`Session`,`Server`
参数提供四个参数,分别是:接收参数名称,为空默认值,是否安全编码,编码函数
Receive使用方法,例如获取客户端Post过来的Name参数:
```php
$Name = Receive('Name');
```
> 如果需要Name是空的,其可以指定第二个参数来进行返回默认值,如:
```php
$Name = Receive('Name','没有内容');
```
> 如果需要指定固定获取方法,例如固定接受get过来的Name参数:
```php
$Name = Receive('get.Name');
```
> 该方法支持参数过滤,其可以自定义第四个参数来自定义过滤方法,系统默认为`htmlspecialchars`
如果不想对参数进行过滤,第三个参数设为false即可
方法参数:`Receive($name='',$null='',$isEncode=true,$function='htmlspecialchars')`
##### Db方法
###### 使用方法
> Db方法是用于操作Mysql的快捷方法,其可以指定一个表用来快捷操作,操作前需要连接上Mysql数据库,具体连接方法请见Mysql配置文件介绍
该方法返回对象,可以来调用Mysql类库提供的方法,如果不填写参数则会返回Mysql类对象
例如查询User表里面符合年龄等于20的所有用户
```php
$UserList = Db('User')->where(array('age'=>'20'))->select();
```
例如获取id为3的用户信息
```php
$UserInfo = Db('User')->find(3);
```
方法参数:`Db($table = '')`
##### Success方法
###### 使用方法
> Success用于展示一个成功信息
该方法返需要填写一个信息来展示
例如展示一个登陆成功的信息:
```php
Success('登陆成功','Http://www.test.com/Admin/User/Index');
```
> 当我们没有连写Url的时候,系统则会判断有无上一页,如果有系统则会跳转至上一页,否则将不会进行跳转。
方法参数:`Success($Msg,$Url='',$Seconds=3)`
##### Error方法
###### 使用方法
> Error方法用于展示一个错误信息
该方法返需要填写一个信息来展示
例如展示一个登陆失败的信息:
```php
Error('登陆失败');
```
> 当我们没有连写Url的时候,系统则会判断有无上一页,如果有系统则会跳转至上一页,否则将不会进行跳转。
方法参数:`Error($Msg,$Url='',$Seconds=3)`
##### Cache方法
###### 使用方法
> Cache方法用于缓存轻量级数据,可用于快速存取
该方法提供三个参数,分别是:cache名称,cache的值,cache过期时间
例如设置一个Cache:
```php
Cache('Name','张三');
```
例如获取一个Cache:
```php
$Name = Cache('Name');
```
例如删除一个Cache:
```php
Cache('Name',NULL);
```
清空当前所有Cache内容
```php
Cache(NULL,NULL);
```
设定一个一小时后过期的Cache
```php
Cache('Name','张三',60);
```
方法参数:`Cache($name = '', $val = '', $expire = true)`
##### Session方法
###### 使用方法
> Session方法是用于快捷的操作Session扩展类库,支持各种SESSION回话的操作
该方法提供三个参数,分别是:session名称,session的值,session过期时间(单位为秒)
该方法返回对象,可以来调用Session类库提供的方法
例如设置一个session回话变量:
```php
Session('Userinfo',array('Name'=>'小明','Time'=>'1492855725'));
```
例如获取一个session回话变量:
```php
$UserInfo = Session('Userinfo');
```
例如删除一个session回话变量:
```php
Session('Userinfo',NULL);
```
清空当前所有会话内容
```php
Session(NULL,NULL);
```
设定一个一小时后过期的会话
```
Session('code',rand(1000,9999),3600);
```
方法参数:`Session($name='',$val='',$expire=0)`
##### Cookie方法
###### 使用方法
> Cookie方法用户设置客户端浏览器的cookie数据
该方法提供三个参数,分别是:cookie名称,cookie的值,cookie过期时间
例如设置一个cookie:
```php
Cookie('Name','张三');
```
例如获取一个cookie:
```php
$Name = Cookie('Name');
```
例如删除一个cookie:
```php
Cookie('Name',NULL);
```
清空当前所有cookie内容
```php
Cookie(NULL,NULL);
```
设定一个一小时后过期的cookie
```php
Cookie('Name','张三',time() + 3600);
```
方法参数:`Cookie($name = '', $val = '', $expire = '0')`
##### Show方法
###### 使用方法
> Show方法用于快速渲染并展示一个视图页面,相关的配置内容请参见配置文件中的View配置
该方法返需要指定一个页面路径来进行渲染和展示,默认将定位至Template目录下,所有视图文件需要置入这个文件夹下才可以正常展示
例如渲染展示视图目录下的Index文件:
```php
Show('Index');
```
例如展示视图目录中Admin目录下的Login文件
```php
Show('Admin/Login');
```
方法参数:`Show($Template='index')`
##### Assign方法
###### 使用方法
> Assign方法用于快速设置一个视图变量,用于视图中输出或其他操作
该方法提供两个参数,分别是键和值
例如设置一个Name视图变量
```php
Assign('Name','小明');
```
模板中使用:
```php
{$Name}
```
方法参数:`Assign($key,$val)`
##### Fetch方法
###### 使用方法
> Fetch方法用于快速渲染并返回一个视图页面,相关的配置内容请参见配置文件中的View配置
该方法返需要指定一个页面路径来进行渲染并返回,默认将定位至Template目录下,所有视图文件需要置入这个文件夹下才可以正常展示
例如渲染获取视图目录下的Index文件:
```php
Fetch('Index');
```
例如获取视图目录中Admin目录下的Login文件
```php
Fetch('Admin/Login');
```
方法参数:`Fetch($Template='index')`
##### Url方法
###### 使用方法
> Url方法用于快速生成URL地址
```php
$Url = Url('User/UserInfo','id=20');
```
第一个参数为必填参数,至少需要有两项,用/号分割,前两个分别是【控制器/方法名】,第二个参数则是选填,用于传递动态参数,如果您需要传递连贯参数可以使用以下方式:
```php
$Url = Url('User/UserInfo/id/20');
```
方法参数:`Url($name,$parm = '')`
##### Glovar方法
###### 使用方法
> Glovar用于设置和获取一个全局变量信息,设置的信息将可以跨页面和作用域调用
Glovar使用方法:改方法提供三个参数,分别是键,值,域,如果只填写键则会获取该键的全局变量,如果填写值则会对键进行变量值设置,如果填写域,下次获取将需要填写域名称。
例如设置一个User全局变量:
```php
Glovar('User',array('Name'=>'小明','Time'=>'1492855725'));
```
例如获取User全局变量:
```php
$UserInfo = Glovar('User');
```
例如设置Name变量到Admin域:
```php
Glovar('Nmae','小明','Admin');
```
例如获取Admin域中的Name变量:
```php
$Name = Glovar('Name','','Admin');
```
域的作用则是防止同一个变量名称之间存在冲突,划分域来区分变量之间的作用范围
方法参数:`Glovar($key='',$val='',$region='User')`
#### 数据模型
##### 添加数据
> 当我们需要添加数据到Mysql中的时候,可以使用insert($data = array())方法来进行添加数据
参数接收一个Array类型的数据,数据的格式为:字段=>储存内容
添加成功后如果表中具有主键字段则返回主键,否则返回bool型
别名:`add($data = array())`
示例:
```php
$UserId = Db('user')->insert(array('name'=>'张三','age'=>25));
$UserId = Db('article')->add(array('title'=>'标题','content'=>'文章内容'));
```
##### 删除数据
> 当我们需要删除某条数据的时候,可以使用delete($key = '')方法来进行删除数据
参数为可选,可接收一个主键,如果提供主键则可以快速删除相关内容,否则将会按条件删除
删除完成返回bool型
数据类型:主键(int)
别名:`del($key = '')`
示例:
```php
Db('user')->where(array('name'=>'张三'))->delete(); //删除name等于张三的数据
Db('user')->delete(6); //删除主键为6的数据
```
##### 修改数据
> 当我们需要修改某条数据的时候,可以使用update($data = array())方法来进行更新数据
参数接收一个Array类型的数据,更新条件可使用where定义,数据的格式为:字段=>储存内容
修改完毕返回相关数据主键
别名:`save($data = array())`
示例:
```php
Db('user')->where(array('phone'=>'15056902037'))->update(array('name'=>'张三')); //将手机号15056902037的用户的name改成张三
Db('user')->where(array('id'=>8))->update(array('name'=>'张三')); //将id等于8的用户的name字段改成张三
```
##### 查询数据
> 查询数据分为单条查询和多条查询
单条查询(`find($key = '')`)
参数为可选,接收一个int类型的主键,如果传入主键则快速查询并返回相关数据,也可以配合where使用,该方法返回一维数组
示例:
```php
Db('user')->find(6); //查询主键为6的数据
Db('user')->where(array('name'=>'张三'))->find(); //查询name等于张三的数据
```
多条查询(`select()`)
无参数,可配合where进行条件筛选,该方法返回多维数组
示例:
```php
Db('user')->where(array('name'=>'张三'))->select(); //查询name等于张三的相关数据
Db('user')->select(); //查询user表的全部数据
```
##### 连贯操作
###### alias
> alias用于设置当前数据表的别名,便于使用其他的连贯操作例如join方法等。
别名 - `alias($name=string)`
```php
Db('user')->alias('a')->select()
```
###### field
> field方法属于模型的连贯操作方法之一,主要目的是标识要返回或者操作的字段,可以用于查询和写入操作。
接收一个数组,也可以是字符串,数组会进行安全处理,而字符串则不会,建议使用数组
字段 - `field($data=array or string)`
```php
Db('user')->field(array('name','age','qq'))->select()
```
###### where
> where方法用于定义sql语句中的条件信息,可传数组也支持字符串,当传入数组则会进行安全处理,建议使用数组,支持普通查询、表达式查询、快捷查询、区间查询、组合查询
条件 - `where($data=array or string)`
```php
Db('user')->where(array('name'=>'小明'))->select()
```
当我们有一些比较特殊的的查询时,需要传入特殊查询标识符,比如,我们需要查询年龄小于20的用户列表:
```php
Db('user')->where(array('age'=>array('lt','20')))->select()
```
示例(模糊查询):
```php
Db('user')->where(array('name'=>array('like','%张')))->select()
```
特殊操作符意义:
* eq => 大于
* neq => 不等于
* gt =>大于
* lt => 小于
* elt => 小于等于
* egt => 大于等于
* like => 模糊查询
* between => 区间查询
* notnull => 非NULL
* null => 为NULL
###### join
> join方法也是连贯操作方法之一,用于根据两个或多个表中的列之间的关系,从这些表中查询数据。
第一个参数为连接的字符,第二个参数为连接的类型,默认为left
关联 - `join($name=string,$type='left')`
```php
Db('comment')->join('user on user.id=comment.userid')->select()
```
###### order
> order方法属于模型的连贯操作方法之一,用于对操作的结果排序。
排序 - `order($field=string)`
```php
Db('user')->order('id desc')->select()
```
###### limit
> limit方法也是模型类的连贯操作方法之一,主要用于指定查询和操作的数量,特别在分页查询的时候使用较多。
该方法第一个参数为查询的起始位置。第二个为查询的条数
条数 - `limit($start=int,$num=int)`
```php
Db('user')->limit(0,30)->select()
```
###### group
> group方法也是连贯操作方法之一,通常用于结合合计函数,根据一个或多个列对结果集进行分组
分组 - `group($name='')`
```php
Db('user')->group('age')->select()
```
示例(查询B表条数并按A表排序):
```php
Db('user')->alias('a')->field(array('count(b.id) as comment_count','a.id','a.name'))->join('comment as b on b.userid=a.id')->group('a.id')->select();
```
###### union
> union操作用于合并两个或多个 SELECT 语句的结果集。
合并 - `union($name='')`
```php
Db('user')->union('select * from msg')->select()
```
###### page
> page方法也是模型的连贯操作方法之一,简化了传统的分页查询过程。
该方法提供两个参数,第一个参数为查询的页数,第二个参数为查询的条数
分页 - `page($page='1',$num='10')`
```php
Db('user')->page(8,30)->select()
```
##### 其他操作
* 执行SQL语句:
* query($sql)
* 结果集下一个
* fetchNext()
* 结果集记录
* freeResult()
* 获取最后插入的ID
* insert_id()
* 返回影响记录
* affectedRows()
* 获取主键
* getPrimary($table)
* 获取字段列表
* getFields($table)
* 获取所有表
* getTable()
* 表是否存在
* tableExists($table)
* 字段是否存在
* fieldExists($table, $field)
* 获取条数
* NumRows($sql)
* 获取字段数
* NumFields($sql)
* 获取版本号
* version()
* 关闭数据库
* Close()
* 获取最后查询的SQL语句
* getSql()
示例(获取数据库版本号):
```php
echo Db()->version();
```