PHP >> ThinkPHP | 知识点 | 经验分享 | Swoole | 设计模式
经验分享

PHP PSR规范

3天前 (2020-04-02) 3 浏览 评论

什么是PSR?PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。官网镇楼:https://www.php-fig.org/psr/PSR-0:自动加载标准,自2014-10-21起,PSR-0已被标记为已弃用。PSR-4现在被推荐作为替代品。PSR-1:基本编码标准PSR-2:编码风格指南,已弃用,由PSR-12扩展和替换。PSR-3:日志记录器接口PSR-4:自动加载标准PSR-5:PHPDo

经验分享

Linux 下安装docker for centos8,以及docker-compose

2个月前 (2020-01-21) 469 浏览 评论

Linux 下安装 Docker 系统,最低需要 CentOS 7(这里以 CentOS 8 为例,和 7 是有差别的)。| 安装依赖请先安装依赖,以免出现各种问题# 首先我们设置 Docker 仓库 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 设置稳定的仓库 sudo&nbs

经验分享

PHP !empty()是否包含isset()?

5个月前 (2019-10-30) 197 浏览 评论

经常能在项目中看到如下代码,那我们有没有考虑这样是否啰嗦了呢?if(isset($var) && !empty($var))首先我们了解下isset() 和 empty()isset:检测变量是否设置,并且不是 NULL。 即:变量未设置,返回false; 变量为NULL,返回falseempty:检查变量是否为空,""、0、"0"、NULL、FALSE、array()、var $var;&

经验分享

PHP Inf and NaN cannot be JSON encoded

6个月前 (2019-09-18) 571 浏览 评论

json_encode 报错 Inf and NaN cannot be JSON encoded 我们通过 json_last_error_msg() 查看错因,得知是json序列化的数组里面包含NAN 和INF 这些内容导致的。解决方案如下:return json_encode(unserialize(str_replace(array('NAN;','INF;'),'0;',serialize($res))));

经验分享

PHP 错误(Error) / 异常(Exception) 的捕获处理

7个月前 (2019-09-05) 385 浏览 评论

“错误”和“异常”的概念十分相似,都说明我们的系统出了问题,也都会给出错误信息和错误类型。但是“异常机制”的出现,是为了补充“错误机制”的不足,是为了防范可能出现的错误。优雅的处理错误和异常,是提升代码友好度和开发效率的关键。什么是错误?PHP中将代码自身的异常(一般是环境或者语法非法所致)称为错误(Error)。什么是异常?PHP中将代码运行中出现的逻辑错误称为异常(Exception)。| 异常异常是 Exception类的对象,我们可以通过getCode(),getMessage

知识点

PHP $a && $b = $c 的用法

7个月前 (2019-08-19) 241 浏览 评论

    在写代码的时候经常需要做if简单判断赋值操作,if多了就显得代码块太大;if如果去掉大括号代码读起来太难受。这时候我们可以用这种写法,意思是:如果$a为真,将$c赋值给$b。// 这是正常的写法,判断多了代码太长 if ( $a ) {     $b = $c; } // 这种写法会被人骂的 if ( $a&

设计模式

PHP 设计模式-观察者模式

8个月前 (2019-07-25) 320 浏览 评论

    什么是观察者模式?    一个对象被设置成可观察时,它的状态发生了变化或触发了某个事件,其他依赖它的对象全部会收到通知,并自动更新。    为什么使用观察者模式?    当发生某个事件后,我们需要对其他对象进行操作。比如登录后,我们需要更新用户的登录时间,传统的方式就是在事件的代码之后直接加入处理的逻辑;下次可能用户异地登录,我们又需要给用户推送消息;每次增加

设计模式

PHP 设计模式-注册树模式

8个月前 (2019-07-25) 325 浏览 评论

    为什么要用注册树模式?    一个项目中肯定会有很多对象,我们使用单例模式的时候,每次获取实例的时候都要判断这个实例是否存在。结合工厂模式的时候,就会有许多的对象,我们就会感觉这些对象非常零散,不方便统一管理。这时候我们使用注册树模式,不管什么对象,不管怎么生成的,只要生成了就统统插到注册树上。我们使用某个对象的时候,只要从树上取下来就可以了,类似全局变量,在入口文件处定义好之后,任意地方都能直接使用。我们来看实例:final&

设计模式

PHP 设计模式-策略模式

8个月前 (2019-07-23) 319 浏览 评论

    策略模式是对象行为模式。是对算法的封装,每个算法封装成一个类(具体角色),并实现抽象类(抽象角色)的共同方法,再通过一个上下文类(环境角色)维护抽象策略的引用。| 优点     1、避免使用多重条件转移语句。    2、遵循开闭原则。| 缺点     客户端必须知道所有的策略类,并自行决定使

设计模式

PHP 混编模式-单例模式结合工厂模式和适配器模式实现多个类创建单例工厂并适配多种缓存

8个月前 (2019-07-22) 354 浏览 评论

    前文中,我们了解了单例模式,认识了工厂模式,实现了多个类创建单例的方法:单例模式结合抽象父工厂实现多个类创建单例。之后又学习了适配器模式,我们现在结合几种设计模式来实现:多个类创建单例工厂,并适配多种缓存。    这里我们会创建缓存工厂(CacheFactory),继承单例抽象父工厂(AbstractSingleton),创建缓存目标接口(CacheTarget),再创建Redis适配者(RedisAdapt