注意事项: $configs=include_once($databasepath.'database.php'); 这里需要改哦
使用说明
```php
include_once('./Db.php');
echo "<br><pre>";
var_dump(Db::name('un_link')->field("id")->where("id=1")->fetchSql(true)->find() );
```
**所有可用操作**
1. getAll($str)查询所有符合条件的 字符串形式(可选)
2. table($str)定义查询表名 有前缀的表名字符串形式(必填)
3. name($str)定义查询表名 没有前缀的表名 字符串形式(必填)
4. alias($str)定义查询表别名没有前缀的表名 字符串形式(必填)
5. field($str);查询字段,可以是数组也可以是字符串
6. select($str)查询所有符合条件的 字符串形式(可选)
7. count($str)统计数量,参数是要统计的字段名(可选)
8. max($str)获取最大值,参数是要统计的字段名(必须)
9. min($str) 获取最小值,参数是要统计的字段名(必须)
10. avg($str) 获取最小值,参数是要统计的字段名(必须)
11. sum 获取总分,参数是要统计的字段名(必须)
12. find($str)查询一条 字符串形式(可选)
13. order($str)排序 字符串形式
14. JOIN($str)关联 字符串形式
15. LEFTJOIN($str)左关联 字符串形式
16. RIGHTJOIN($str)右关联 字符串形式
17. where($v)查询条件,可以是数组也可以是字符串
18. group($str)分组条件
19. page(0,10)分页计算,限制数量
20. limit(0,10)限制结果数量
21. execute($sql)直接执行sql语句
22. getlatsql()查询最后一条sql
23. insert($array)添加
24. update($array)修改
25. delete($array)删除
26. fetchSql(true)用于直接返回SQL而不是执行查询,适用于任何的CURD操作方法。 例如:true
27. failException 取消抛出异常,如果不传入任何参数,默认为关闭,用于select和find方法,例如:false
28. resultset_type=数据库的查询结果也就是数据集,默认的配置下,数据集的类型是一个二维数组,可以配置数据库的 resultset_type 返回结果集:
**和tp5对比没有的操作**
1、UNION 操作用于合并两个或多个 SELECT 语句的结果集。
2、force 方法用于数据集的强制索引操作,例如:
3、时间查询
4、高级查询
5、子查询
6、事务操作
7、查询事件
8、注册事件
9、如果开启数据库的调试模式的话,你可以对数据库执行的任何SQL操作进行监听,使用如下方法5.0支持存储过程,如果我们定义了一个数据库存储过程sp_query,可以使用下面的方式调用:
10、ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。配置database.deploy 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下
11、DISTINCT 方法用于返回唯一不同的值 。
12、Lock方法是用于数据库的锁机制,如果在查询或者执行操作的时候使用:
13、cache可以用于select、find、value和column方法,以及其衍生方法,使用cache方法后,在缓存有效期之内不会再次进行数据库查询操作,而是直接获取缓存中的数据,关于数据缓存的类型和设置可以参考缓存部分。
14、COMMENT方法 用于在生成的SQL语句中添加注释内容
```php
<?php
/**
* 单例模式
**/
class Db
{
//保存全局实例
private static $instance;
//数据库连接句柄
private $_db;
public $_configs = [
// 数据库连接地址
'hostname' => "127.0.0.1",
// 数据库名称
'dbname' => "",
// 数据库账户
'username' => "",
// 数据库密码
'password' => "E7YhH8DZJGpfdb8A",
// 数据库表前缀
'prefix' => "",
'resultset_type' => false,
];//数据库配置
public $_getlatsql = [];//最后一次sql
/*需要每次使用表名都重置的*/
private $_table = null;//表名
private $_join = null;//where条件
private $_where = null;//where条件
private $_order = null;//order排序
private $_limit = null;//limit限定查询
private $_group = null;//group分组
private $_alias = null;//alias定义别名
private $_field = "*";//field定义字段
private $_fetchSql=false;
private $_failException=false;
//数据库连接参数
//私有化构造函数,防止外界实例化对象
private function __construct()
{
$link = $this->_db;
//$configs=include_once($databasepath.'database.php');
// var_dump($configs);
// echo "<br>";
$this->_configs=empty($configs)?$this->_configs:$configs;
// var_dump($this->_configs);die;
if(!$link){
$db = mysqli_connect($this->_configs['hostname'],$this->_configs['username'],$this->_configs['password'],$this->_configs['dbname']);
mysqli_query($db,"set names utf8");
if(!$db){
$this->ShowException("错误信息".mysqli_connect_error());
}
$this->_db = $db;
}
}
//私有化克隆函数,防止外界克隆对象
private function __clone()
{
}
/**
* 获取所有数据
*
* @param <type> $table The table
*
* @return boolean All.
*/
public function getAll($table=null){
$link = $this->_db;
if(!$link)return false;
$sql = "SELECT * FROM {$table}";
$array=$this->execute($sql);
if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){
return $array;
}
$data = mysqli_fetch_all($array,MYSQLI_ASSOC);
return $data;
}
/*
*/
public function reset(){
$this->_failException=false;
$this->_fetchSql=false;
$this->_join = null;//where条件
$this->_where = null;//where条件
$this->_order = null;//order排序
$this->_limit = null;//limit限定查询
$this->_group = null;//group分组
$this->_alias = null;//alias定义别名
$this->_field = "*";//field定义字段
}
/*启动事务*/
public static function startTrans($table){
return mysqli_query($this->_db, "SET AUTOCOMMIT=0"); // 设置为不自动提交,因为MYSQL默认立即执行
}
/*回滚事务*/
public static function rollback($table){
return mysqli_query($this->_db, "ROLLBACK"); // 判断当执行失败时回滚
}
/*提交事务*/
public static function commit($table){
return mysqli_commit($this->_db); //执行事务
}
public static function table($table){
if(!(self::$instance instanceof self))
{
self::$instance = new self();
}
self::$instance->_table("$table");
return self::$instance;
}
public function _table($table){
$this->reset();
$this->_table = $table;
return $this;
}
public static function name($table){
if(!(self::$instance instanceof self))
{
self::$instance = new self();
}
self::$instance->_name("$table");
return self::$instance;
}
public function _name($table){
$this->reset();
$this->_table = $this->_configs['prefix'].$table;
return $this;
}
public function alias($as){
$this->_alias = ' as '. $as;
return $this;
}
/**
* where条件
*
* @param string $where The where
*
* @return <type> ( description_of_the_return_value )
*/
public function field($field='*'){
$fieldStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_array($field)){
foreach ($field as $key => $value) {
$fieldStr .= "'".$value."'";
}
$fieldStr = $fieldStr;
}elseif(is_string($field)&&!empty($field)){
$fieldStr = $field;
}
$this->_field = $fieldStr;
return $this;
}
/**
* 实现查询操作
*
* @param string $fields The fields
*
* @return boolean ( description_of_the_return_value )
*/
public function select($fields=""){
$fieldsStr = '';
$link = $this->_db;
if(!$link)return false;
if(is_array($fields)){
$fieldsStr = implode(',', $fields);
}elseif(is_string($fields)&&!empty($fields)){
$fieldsStr = $fields;
}
if(empty($fields)){
$fields= $this->_field;
}
$sql = "SELECT {$fields} FROM {$this->_table} {$this->_alias} {$this->_join} {$this->_where} {$this->_order} {$this->_limit}";
// echo($sql."<br/>");
$array=$this->execute($sql);
if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){
return $array;
}
$data = mysqli_fetch_all($array,MYSQLI_ASSOC);
return $data;
}
/**.$this->_alias
* 实现查询操作
*
* @param string $fields The fields
*
* @return boolean ( description_of_the_return_value )
*/
public function count($fields="*"){
// return $this->aggregation($fields,"count");
$fieldsStr = '';
$link = $this->_db;
if(!$link)return false;
if(is_array($fields)){
$fieldsStr = implode(',', $fields);
}elseif(is_string($fields)&&!empty($fields)){
$fieldsStr = $fields;
}
$sql = "SELECT count({$fields}) FROM {$this->_table} {$this->_alias} {$this->_join} {$this->_where} {$this->_order} {$this->_limit}";
// echo($this->_where."<br/>");
// echo($sql."<br/>");
$array=$this->execute($sql);
if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){
return $array;
}
$data = mysqli_fetch_all($array,MYSQLI_ASSOC);
// var_dump($data);die;
return $data[0]["count({$fields})"];
}
public function aggregation($fields,$type){
$fieldsArr = [];
$fieldsArr2=[];
$link = $this->_db;
if(!$link)return false;
if(is_array($fields)){
$fieldsArr = $fields ;
}elseif(is_string($fields)&&!empty($fields)){
$fieldsArr = explode(',', $fields);
}
foreach($fieldsArr as $key=>$val){
$fieldsArr2[]=$type."({$val})";
}
$fieldsStr=implode(',', $fieldsArr2);
$sql = "SELECT $fieldsStr FROM {$this->_table} {$this->_alias} {$this->_join} {$this->_where} {$this->_order} {$this->_limit}";
$array=$this->execute($sql);
if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){
return $array;
}
$data = mysqli_fetch_all($array,MYSQLI_ASSOC);
return $data[0];
}
public function max($fields){
return $this->aggregation($fields,"max");
}
public function min($fields){
return $this->aggregation($fields,"min");
}
public function sum($fields){
return $this->aggregation($fields,"sum");
}
public function avg($fields){
return $this->aggregation($fields,"avg");
}
//
/**
* 实现查询操作
*
* @param string $fields The fields
*
* @return boolean ( description_of_the_return_value )
*/
public function find($fields=""){
$fieldsStr = '';
$link = $this->_db;
if(!$link)return false;
if(is_array($fields)){
$fieldsStr = implode(',', $fields);
}elseif(is_string($fields)&&!empty($fields)){
$fieldsStr = $fields;
}
if(empty($fields)){
$fields= $this->_field;
}
$sql = "SELECT {$fields} FROM {$this->_table} {$this->_alias} {$this->_join} {$this->_where} {$this->_order} {$this->_limit}";
// echo($sql."<br/>");
$array=$this->execute($sql);
if(is_string($array)||$this->_failException||$this->_configs['resultset_type']){
return $array;
}
$data = mysqli_fetch_all($array,MYSQLI_ASSOC);
return $data[0];
}
/**
* order排序
*
* @param string $order The order
*
* @return boolean ( description_of_the_return_value )
*/
public function order($order=''){
$orderStr = '';
$link = $this->_db;
if(!$link)return false;
if(is_string($order)&&!empty($order)){
$orderStr = "ORDER BY ".$order;
}
$this->_order = $orderStr;
return $this;
}
/**
* JOIN
*
* @param string $where The where
*
* @return <type> ( description_of_the_return_value )
*/
public function JOIN($JOIN=''){
$JOINStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_string($JOIN)&&!empty($JOIN)){
$JOINStr = " join ".$JOIN;
}
$this->_join = $JOINStr;
return $this;
}
/**
* LEFTJOIN
*
* @param string $where The where
*
* @return <type> ( description_of_the_return_value )
*/
public function LEFTJOIN($JOIN=''){
$JOINStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_string($JOIN)&&!empty($JOIN)){
$JOINStr = " LEFT JOIN ".$JOIN;
}
$this->_join = $JOINStr;
return $this;
}
/**
* LEFTJOIN
*
* @param string $where The where
*
* @return <type> ( description_of_the_return_value )
*/
public function RIGHTJOIN($JOIN=''){
$JOINStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_string($JOIN)&&!empty($JOIN)){
$JOINStr = " RIGHT JOIN ".$JOIN;
}
$this->_join = $JOINStr;
return $this;
}
/**
* where条件
*
* @param string $where The where
*
* @return <type> ( description_of_the_return_value )
*/
public function where($where=''){
$whereStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_array($where)){
foreach ($where as $key => $value) {
if(is_array($value)){
if($value == end($where)){
$whereStr .= "`".$key."` ".$value[0]." '".$value[1]."'";
}else{
$whereStr .= "`".$key."` ".$value[0]." '".$value[1].""."' AND ";
}
}else if($value == end($where)){
$whereStr .= "`".$key."` = '".$value."'";
}else{
$whereStr .= "`".$key."` = '".$value."' AND ";
}
}
$whereStr = "WHERE ".$whereStr;
}elseif(is_string($where)&&!empty($where)){
$whereStr = "WHERE ".$where;
}
$this->_where = $whereStr;
return $this;
}
/**
* group分组
*
* @param string $group The group
*
* @return boolean ( description_of_the_return_value )
*/
public function group($group=''){
$groupStr = '';
$link = $this->_db;
if(!$link)return false;
if(is_array($group)){
$groupStr = "GROUP BY ".implode(',',$group);
}elseif(is_string($group)&&!empty($group)){
$groupStr = "GROUP BY ".$group;
}
$this->_group = $groupStr;
return $this;
}
/**
*page 分页计算,限定查询
*
* @param string $limit The limit
*
* @return <type> ( description_of_the_return_value )
*/
public function page($page='',$limit=''){
$limitStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_array($page)){
list($page,$limit) = $page;
}else if((is_string($page)||!empty($page))&&empty($limit)){
list($page,$limit) = explode(",",$page);
}
if($page<1){
$page=1;
}
if(empty($limit)&&!empty($page)){
$limitStr = "LIMIT ".$page;
}else{
$limitStr = "LIMIT ".($page-1)*$limit.",".$limit;
}
/*Start limit*/
$this->_limit = $limitStr;
return $this;
}
/**
* limit限定查询
*
* @param string $limit The limit
*
* @return <type> ( description_of_the_return_value )
*/
public function limit($slimit='',$limit=''){
$limitStr = '';
$link = $this->_db;
if(!$link)return $link;
if(is_array($slimit)){
list($slimit,$limit) = $slimit;
}else if((is_string($slimit)||!empty($slimit))&&empty($limit)){
list($slimit,$limit) = explode(",",$slimit);
}
if($slimit>0){
$slimit = $slimit-1;
}else{
$slimit=0;
}
if(empty($limit)&&!empty($slimit)){
$limitStr = "LIMIT ".$slimit;
}else{
$limitStr = "LIMIT ".$slimit.",".$limit;
}
//var_dump($limitStr);die;
/*Start limit*/
$this->_limit = $limitStr;
return $this;
}
public function fetchSql($str){
$this->_fetchSql=$str;
return $this;
}
public function failException($str){
$this->_failException=$str;
return $this;
}
/**
* 执行sql语句
*
* @param <type> $sql The sql
*
* @return boolean ( description_of_the_return_value )
*/
public function execute($sql=null){
$link = $this->_db;
if(!$link)return false;
$this->_getlatsql=[$this->_table=>$sql];
if($this->_fetchSql){
return $sql;
}
$res = mysqli_query($this->_db,$sql);
// var_dump($sql);die;
// var_dump($res["current_field"]);
if(!$res){
if($this->_failException){
return null;
}else{
$errors = mysqli_error_list($this->_db);
$this->ShowException("报错啦!<br/>错误号:".$errors[0]['errno']."<br/>SQL错误状态:".$errors[0]['sqlstate']."<br/>错误信息:".$errors[0]['error']);
die();
}
}
return $res;
}
/**
* 执行sql语句
*
* @param <type> $sql The sql
*
* @return boolean ( description_of_the_return_value )
*/
public function getlatsql(){
return $this->_getlatsql[$this->_table];
}
/**
* 插入数据
*
* @param <type> $data The data
*
* @return boolean ( description_of_the_return_value )
*/
public function insert($data){
$link = $this->_db;
if(!$link)return false;
if(is_array($data)){
$keys = '';
$values = '';
foreach ($data as $key => $value) {
$keys .= "`".$key."`,";
$values .= "'".$value."',";
}
$keys = rtrim($keys,',');
$values = rtrim($values,',');
}
$sql = "INSERT INTO `{$this->_table}`({$keys}) VALUES({$values})";
// var_dump( $sql);die;
mysqli_query($this->_db,$sql);
$insertId = mysqli_insert_id($this->_db);
return $insertId;
}
/**
* 更新数据
*
* @param <type> $data The data
*
* @return <type> ( description_of_the_return_value )
*/
public function update($data){
$link = $this->_db;
if(!$link)return $link;
if(is_array($data)){
$dataStr = '';
foreach ($data as $key => $value) {
$dataStr .= "`".$key."`='".$value."',";
}
$dataStr = rtrim($dataStr,',');
}
$sql = "UPDATE `{$this->_table}` SET {$dataStr} {$this->_where} {$this->_order} {$this->_limit}";
$res = $this->execute($sql);
return $res;
}
/**
* 删除数据
*
* @return <type> ( description_of_the_return_value )
*/
public function delete(){
$link = $this->_db;
if(!$link)return $link;
$sql = "DELETE FROM `{$this->_table}` {$this->_where}";
$res = $this->execute($sql);
return $res;
}
/**
* 异常信息输出
*
* @param <type> $var The variable
*/
private function ShowException($var){
if(is_bool($var)){
var_dump($var);
}else if(is_null($var)){
var_dump(NULL);
}else{
echo "<pre style='position:relative;z-index:1000;padding:10px;border-radius:5px;background:#F5F5F5;border:1px solid #aaa;font-size:14px;line-height:18px;opacity:0.9;'>".print_r($var,true)."</pre>";
}
}
}
```
- 服务器购买到搭建宝塔
- 结构规范
- php基础
- php简介
- php是什么
- PHP 能做什么
- PHP 如何运行
- 如何了解弱语言
- 安装环境
- 安装LNMP
- 宝塔
- phpstudy
- PHP基本语法
- PHP 标记
- 从 HTML 中分离
- 指令分隔符
- 注释
- php 数据类型
- 类型检测
- 四种标量类型
- boolean(布尔型)
- Integer 整型
- Float 浮点型
- String 字符串类型
- 两种复合类型
- array(数组)
- object(对象)
- 两种特殊类型
- resource(资源)
- NULL(无类型)
- 类型转换
- 变量
- 变量定义和命名规范
- 传值和引用
- 预定义变量
- php预定义变量
- $_SERVER详解
- 变量范围
- 全局变量
- 静态变量
- 可变变量
- 常量
- 常量简介
- 常量定义
- 相比变量
- 魔术常量
- 运算符
- 运算符简介
- 算术运算符
- 赋值运算符
- 位运算符
- 比较运算符
- 错误控制运算符
- 执行运算符
- 递增(减)运算符
- 逻辑运算符
- 字符串运算符
- 数组运算符
- 新增操作符
- 控制结构
- 控制简介
- if 语句
- while 语句
- for 语句
- foreach 语句
- break 语句
- continue 语句
- switch 语句
- declare 语句
- return 语句
- include 语句
- PHP 函数
- 函数简介
- 用户自定义函数
- 函数的参数
- 返回值
- 可变函数
- 内部函数
- 匿名函数
- PHP 的类和对象
- PHP 的类和对象简介
- 基本概念
- 对象继承
- 属性
- 类常量
- 自动加载对象
- 构造和析构函数
- 访问控制
- 范围解析操作符(::)
- 静态static
- Static 关键字
- 抽象类
- 接口
- 匿名类
- 面向对象其他特性
- const关键字
- final关键字
- abstract用于定义抽象方法和抽象类。
- self、$this、parent::关键字
- 接口(interface)
- trait关键字
- instanceof关键字
- 魔术方法
- 构造函数和析构函数
- 私有属性的设置获取
- __toString()方法
- __clone()方法
- __call()方法
- 类的自动加载
- 会话控制
- cookie
- PHP 操作 cookie
- 项目实战
- SESSION
- Session 的初步介绍与实验准备
- PHP 操作 session
- 项目实战2
- http
- 特点
- 工作过程
- request
- response
- HTTP状态码
- URL
- GET和POST的区别
- HTTPS
- 常用函数
- 常用的字符串函数
- 常用的数组函数
- 常用文件函数
- 常用时间函数
- 常用日历函数
- 常用url函数
- 面试题常见
- 时间戳
- 技术类文档
- 技术开发文档
- 开发环境
- 开发规范
- 注释规范
- 开发目录结构
- 数据库字典
- 路由
- 定时任务
- 获取系统配置
- 系统常用函数
- 后台表单
- 消息队列
- 第三方类库标注
- 需求文档
- 数据库
- MYSQL
- 事务(重点)
- 索引
- 存储过程
- 触发器
- 视图
- 导入导出数据库
- 优化mysql数据库的方法
- MyISAM与InnoDB区别
- 外连接、内连接的区别
- 物理文件结构
- MongoDB
- Redis
- 运用场景和实例
- pgsql
- 服务器
- Nginx
- 正向代理和反向代理
- 负载均衡
- Linux常用命令
- 基本目录和命令
- php开发工具
- phpStorm编辑器
- 安装和汉化
- 链接ftp
- 常用操作
- 常用快捷键
- 自定义快捷键
- 使用快捷键新建目录和文件
- 使用快捷键快速查找文件、类、方法
- 多文件切换
- 快速搜索设置项
- 多点编辑
- 方法重构
- 自定义文件模板和代码片段
- 自定义文件模板
- 自定义代码片段
- Xdebug 调试插件
- 安装Xdebug 调试插件
- 在PHPStorm 中使用 Xdebug 插件调试代码
- Vi Box虚拟机
- Vi Box 虚拟机 Oracle VM VirtualBox
- 虚拟机辅助工具一-Vagrant
- 华硕主板BIOS设置中VT虚拟化技术选项怎么开启 Oracle VM VirtualBox
- 沟通工具
- 文档分享
- 流程图
- 任务分配
- 代码托管
- 缺陷管理
- 设计图
- gitLab
- 安装
- 汉化
- Gitlab 用户和项目管理
- Gitlab 持续集成与自动构建实践
- PHP进阶
- 大流量解决方案
- PSR规范
- RESTFUL规范
- 设计模式
- 单例模式
- 策略模式
- 工厂模式
- 简单工厂模式
- 工厂方法模式
- 抽象工厂模式
- 外观模式
- 享元模式
- 代理模式
- 命令模式
- 中介者模式
- 观察者模式
- 状态模式
- 建筑者模式
- 适配器模式
- 桥接模式
- 装饰器模式
- 排序算法
- 冒泡排序算法
- 二分查找算法
- 直接插入排序算法
- 希尔排序算法
- 选择排序算法
- 快速排序算法
- 常见网络攻击类型
- CSRF攻击
- XSS攻击
- SQL注入
- Cookie攻击
- thinkphp
- thinkphp5命令行
- git
- Git 常用命令操作和基础学习
- 傻瓜与白痴的笔记本
- 学习
- 一、Git 与 GitHub 的来历
- 二、在 GitHub 上创建仓库
- 三、安装
- Windows 上安装 Git
- 安装2
- 四、克隆 GitHub 上的仓库到本地
- 五、GIT基本操作哦
- 六、Git 分支操作
- 一、添加SSH关联授权
- 二、为 Git 命令设置别名
- 三、Git 分支管理
- 七、多人协作 GitHub 部分
- 八、多人协作 Git 部分
- 九、Git tag 和 GitHub releases
- composer
- Composer 基础使用
- 安装和使用
- 在项目中集成PHPmailer
- 认识composer.json和composer.lock文件
- composer的其他命令操作
- 本地创建composer包
- 提交自己的依赖包到composer Packagist
- crontab计划任务
- Linux任务计划crontab
- php 的 计划任务——Crontab
- bootstrap前端框架
- 入门
- 实战技巧
- 后台模板样式——admin
- 第三方接口对接
- 微信
- 敏感词过滤
- 微信图片检测
- 短信类型
- 阿里云短信
- 容联云短信
- 飞鸽短信
- 媒体
- 新闻接口测试
- 免费新闻
- 免费视频
- nba赛事,未测试
- 豆瓣电影接口
- 音乐接口
- 网易短视频接口
- 知乎微信接口
- 百度ai
- 百度语音
- 图片识别
- 腾讯
- 腾讯im
- 腾讯云直播
- 腾讯滑动验证
- 物流快递
- 快递鸟、快递100
- 推送
- 极光推送
- 地图&天气
- 获取城市和天气预报
- 地址获取和定位
- 地址转换经纬度
- 图片类型
- 360新闻图片
- 多平台翻译
- 实名认证
- 七牛云
- 云合同
- 多站点收录查询接口
- 打印机
- 第三方登录
- 微信登录
- 支付
- 支付宝app支付
- 微信提现+退款
- 微信app支付
- 微信支付公式
- 类库
- 图片类
- phpqrcode实战:生成二维码
- 图片处理类
- 验证码类
- 消息类
- PHPMailer
- 分词类
- ik
- PHPAnalysis
- 自己封装的方法
- GD库
- 自动获取图片主题颜色
- 图片转素描
- 生成海报
- 图片转字符
- 验证码
- 图片转黑白灰
- GD库实现图片水印与缩略图
- Imagick扩展
- 将一张image图片转化为字符串的形式
- 基本方法
- 图片路径转base64
- 生成文件后缀图片
- url路径判断拼接
- 防篡改入口文件
- php中文姓名判断
- 可控抽奖
- 特殊截取
- 银行卡位(特殊卡号不支持)
- 微信红包计算
- 数组和对象互转
- php批量更新修改数据库
- base64_img上传
- 删库删目录————跑路
- 字符串特殊符号过滤
- 首字母转成默认头像
- 生成随机字符串
- 根据id转 邀请码
- 日志写入
- 字符串截取,超出显示省略号
- 清除html标签+清除html标签,字符串截取
- 计算时间差的函数和演示
- php判断路径是否是绝对路径,如果不是拼接至绝对路径
- sql 参数过滤
- php敏感词过滤
- 省市区分别截取
- 生成csv
- 无限极分类
- api接口返回封装的方法函数
- xml和数组互转
- 获取thinkph5下控制器和方法名
- 过滤
- 获取服务器信息
- php随机颜色
- 创建多级目录
- 推广码
- 跨域检测
- 二维码
- 文档类
- word
- PHPWord
- tcPdf
- MPDF
- dompdf
- FPDF、Fpdi类库
- excel
- PhpSpreadsheet导入
- phpExcel
- 时间
- PHP-农历+节气+节日等类库
- 时间类库
- 最好用的是人性化时间差
- 文件管理类
- 文件操作类
- 文件夹操作
- php操作ftp的类库
- curl
- 数据库操作类
- Db扩展函数
- 数据库备份
- 仿tp5的Db库
- 不常用mysql
- 自动生成数据库字典
- 字符串
- 字符串操作helper/Str
- 随机生成姓名
- 随机生成类
- php字符串类
- 中文转拼音的类库
- 分类
- 缓存
- 数据验证
- 身份证相关操作
- 安全类
- 表单生成类
- 自动生成表单,未完待续中