摘要:
抽象类 抽象类无法被实例化,它的作用是为所有继承自它的类定义(或部分实现)接口。 使用 abstract 关键字定义抽象类。 可以像在普通类中那样在抽象类中创建方法和属性,在大多数情况下,一个抽象类至少包含一个抽象方法,抽象方法也是通过 abstract 关键字声明的。抽象方法只有方法声明,没有方法 阅读全文
摘要:
在项目开发中经常会使用到一些特殊的值作为数组的索引,一般可以先查询出数据后数组循环拼接成所需的格式。不过YII2框架提供了一种更简单的方法indexBy()。 参考Yii文档:https://www.yiichina.com/doc/guide/2.0/db-query-builder 当你在调用a 阅读全文
摘要:
使用多个or的复杂查询: AND ((`name`='张三') OR (`name`='李四') OR (`name`='王五')) // AND ((`name`='张三') OR (`name`='李四') OR (`name`='王五')) $query->andWhere(['or', [' 阅读全文
摘要:
上次做项目时,发现一个问题,这里记录一下: 问题: 在使用date函数获取上一个月最后一天或下个月最后一天时,如果当前日期是31号,获取的数据有问题。 // 2019-12-01 正确应该是 2019-11-30 date('Y-m-d', strtotime('+1 month', strtoti 阅读全文
摘要:
CSV文件是以纯文本形式存储的,一般以逗号为分隔符。这里主要简单介绍下如何导出CSV文件。 一、浏览器导出CSV文件格式 /** * 导出CSV文件 */ function exportCsv() { // 需要导出的内容 $data = [ ['name' => '张三', 'score' => 阅读全文
摘要:
一、开启慢查询日志首先需要了解四个参数: slow_query_log # 是否开启慢查询日志,默认OFF,开启则设置为 ON。 slow_query_log_file # 慢查询日志文件存储位置。 log_queries_not_using_indexes # 是否把没有使用到索引的SQL记录到日 阅读全文
摘要:
今天主要介绍一下使用递归来按层级查找数据。原理挺简单的,主要是通过父级id一级一级的循环查找子级,使用PHP循环代码也很容易实现,不过如果层级越多,PHP重复代码也越多,这时可以使用递归来实现这功能。 1、首先查出要使用的数据组成一个数组(避免递归里查询数据库,之后根据这个数组组成自己需要的数据就可 阅读全文
摘要:
定义: 单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 实现思路: 1、通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 2、首先 阅读全文
摘要:
准备条件: 1、首先准备两张表: customer(用户表)(id, name) order(订单表)(id, customer_id, price) customer 表和 order 表之间是一对多的关系,通过 customer_id 字段关联。 2、建立相应的模型文件 customer.php 阅读全文
摘要:
1、字符串"0"在PHP和js中转换为布尔值是false还是true php:false; php 弱语言 '0'和0一样; js:true;字符串除了空字符串('')其他都是true(包括' '这种中间有空格的); 2、echo, print, print_r, var_dump 区别 echo 阅读全文