## empty为true的表达式
~~~
empty(null);
empty(0);
empty('0');
empty('');
empty(false);
empty([]);
empty($not_exists_var);//未定义的变量
~~~
## empty为false的表达式
~~~
$exists_var = 'abc';
$a[] = empty($exists_var);
$a[] = empty($exists_var[0]);
$a[] = empty($exists_var[0.5]);
$a[] = empty($exists_var['0']);
~~~
## NULL 合并运算符
~~~
//当$username未定义,或者为null,值为 'nobody'
$username = $username ?? 'nobody';
//等价 $username = isset($username) ? $username : 'nobody';
//当$username为空(empty()返回true)
$username = $username ?: 'nobody';
//等价 $username = empty($username) ? $username : 'nobody';
~~~
## 返回带命名空间的完整的类名
~~~
echo BaseController::class;
//返回 "app\\BaseController"
~~~
## 获取某个文件夹下的文件
~~~
$files = glob($filePath . '*.php');
~~~
## new self与 new static的区别
self指向的是当前方法存在的这个类,也就是父类。static指向的是最终那个子类。
~~~
class Parent
{
public static function getParent()
{
return new self;
}
public static function getChild()
{
return new static;
}
}
class Son extends Parent
{
}
var_dump(Son::getParent(), PHP_EOL);//object(Parent)#1 (0) {}
var_dump(Son::getChild(), PHP_EOL);//object(Son)#1 (0) {}
~~~
## self::ClassName 与 static::ClassName 的区别
self指向的是当前方法存在的这个类,也就是父类。static指向的是最终那个子类。
~~~
class Parent
{
public static function getParent()
{
return self::class;
}
public static function getChild()
{
return static::class;
}
}
class Son extends Parent
{
}
echo Son::getParent(), PHP_EOL;//parent
echo Son::getChild(), PHP_EOL;//Son
~~~
## 为什么字符集不选择utf8,排序规则不使用utf8\_general\_ci
采用utf8编码的MySQL无法保存占位是4个字节的Emoji表情。为了使后端的项目,全面支持客户端输入的Emoji表情,升级编码为utf8mb4是最佳解决方案。对于JDBC连接串设置了characterEncoding为utf8或者做了上述配置仍旧无法正常插入emoji数据的情况,需要在代码中指定连接的字符集为utf8mb4。
- 搭建ThinkPHP6的开发环境
- 配置ThinkPHP6
- 必要的基础知识(basic)
- MVC开发模式
- 控制器(controller)
- 数据库(database)
- 模型(model)
- 模型关联(relation)
- 视图(view)
- Session
- Cookie
- 缓存(cache)
- 上传(upload)
- 验证器(validate)
- 验证码(captcha)
- 命令行(command)
- 服务器部署(deploy)
- 数据备份(backup)
- 数据同步(synchronization)
- 订阅服务(subscribe)
- PHP 易混淆知识点
- 助手函数
- MySQL规范
- Redis 规范
- office插件 phpoffice
- 拼音插件 pinyin
- 日期插件 datetime
- 消息插件 amqp
- 产品部署环境的搭建
- PDF 等杂项处理
- 文件上传
- 常用扩展
- flc/dysms
- 使用示例 ①
- 使用示例 ②
- qiniu/php-sdk
- 简介
- 使用示例
- 使用示例 2 ②
- liliuwei/thinkphp-jump
- 扩展介绍
- 下载扩展
- 使用方法
- topthink/think-captcha
- 安装扩展
- 验证码显示
- 更换验证码
- 验证码校验
- 验证码配置
- 自定义验证码
- phpoffice/phpspreadsheet
- 数据写入表格
- 读取表格数据
- topthink/think-queue
- 安装
- 自定义函数
- 任务类
- 带有日志的任务类