提升PHP执行效率的一些小细节

用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会(只有echo能这么做)。 如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。 $row[’id’] ,not $row[id]。 echo 比 print ...

PHP实现Bitmap的探索 - GMP扩展使用

原文地址:https://blog.fanscore.cn/p/22/ 一、背景 公司当前有一个用户群的系统,核心功能是根据不同的条件组去不同的业务线中get符合条件的uid列表,然后存到redis中的bitmap中。 举个🌰,如果一个用户群中有两个用户: 3和7,即[3,7],用bitmap表示 ...

PHP程序员必须会的 45 个PHP 面试题

Q1: == 和 之间有什么区别? 话题: PHP困难: ⭐ 如果是两个不同的类型,运算符 == 则在两个不同的类型之间进行强制转换 操作符执行’类型安全比较‘ 这意味着只有当两个操作数具有相同的类型和相同的值时,它才会返回 TRUE。 1 1: true 1 == 1: true 1 "1": f ...

[PHP]外观/门面/Facade模式-结构型设计模式

外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。符合迪米特原则 如果我想使用多个类的代码,先创建个门面 ...

[PHP] 装饰器模式-结构型设计模式

动态地为类的实例添加功能,一层一层的套功能 先定义好接口 interface Booking{ public function getDescription(): string; } 这个就是装饰器实现了Booking,通过构造函数传递Booking对象进来 abstract class Booki ...

git查看当前用户名密码并修改

获取当前登陆用户: git config user.name //获取当前登录的用户 git config user.email //获取当前登录用户的邮箱 修改登陆用户: git config --global user.name 'userName' // 修改登陆账号,userName为你的g ...

[PHP] 数据映射器模式-结构型设计模式

数据映射器是一个数据访问层,用于将数据在持久性数据存储(通常是一个关系数据库)和内存中的数据表示(领域层)之间进行相互转换。其目的是为了将数据的内存表示、持久存储、数据访问进行分离。该层由一个或者多个映射器组成(或者数据访问对象),并且进行数据的转换。映射器的实现在范围上有所不同。通用映射器将处理许 ...

[PHP] 组合模式-结构型设计模式

以单个对象的方式来对待一组对象 有一个接口类,有一个需实现的方法,其他所有类都实现它,在一个组合类的实现方法中循环调用另外其他类的方法 有一个公共的接口类 interface Renderable { public function render(): string; } 组合类,也实现了接口 cl ...

[PHP] 桥接模式-结构型设计模式

解耦一个对象的实现与抽象,这样两者可以独立地变化。对一个功能进行拆分成两个具体对象,通过构造函数或者方法传递桥接起来两个对象 通过传递另外对象来实现功能,本身保留抽象方法给子类去独立实现 abstract class Service { protected Formatter $implementa ...

[PHP] php使用curl扩展时的两个超时设置

CURLOPT_CONNECTTIMEOUT 连接超时 用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况; CURLOPT_TIMEOUT 传输超时 用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时 ...

[PHP] 适配器模式-结构型设计模式

将某个类的接口转换成与另一个接口兼容。适配器通过将原始接口进行转换,给用户提供一个兼容接口,使得原来因为接口不同而无法一起使用的类可以得到兼容。 下面这个例子Book 和EBook这是两个类型,方法都不一样,通过一个EBookAdapter类转换EBook方法成为Book的方法 两个类型的接口 in ...

[PHP] 静态工厂模式-创建型设计模式

和抽象工厂类似,静态工厂模式用来创建一系列互相关联或依赖的对象和抽象工厂模式不同的是静态工厂模式只用一个静态方法就解决了所有类型的对象创建 工厂里提供一个静态方法来创建不同的对象实例 final class StaticFactory { public static function factory ...

[PHP] 单例模式-创建型设计模式

使应用中只存在一个对象的实例,并且使这个单实例负责所有对该对象的调用 final class Singleton{ private static ?Singleton $instance = null; public static function getInstance(): Singleton ...

[PHP] 简单工厂模式-创建型设计模式

简单的创建对象型工厂模式,目的是当有很多的初始化动作的时候,可以直接在工厂里搞,不用每次new都写一遍 工厂生成自行车 class SimpleFactory { public function createBicycle(): Bicycle { return new Bicycle(); } } ...

[PHP] 原型模式-创建型设计模式

通过创建一个原型对象,然后复制原型对象来避免通过标准的方式创建大量的对象产生的开销(new Foo())。 大量的数据对象(比如通过ORM获取1,000,000行数据库记录然后创建每一条记录对应的对象实体)带构造方法、属性的类,clone的性能要比new带上构造参数的性能高不少 这个就是原型,子类继 ...

Laravel Maatwebsite-Excel 3.1 实现导出导入

写在前面 导出导入的功能是平时开发比较常见的功能了,Laravel Maatwebsite-Excel更新了3.x,这次就自己封装一个简单的通用版并记录一下遇到的问题。 环境 PHP: ^7.3.4 Laravel: ^5.7 安装 composer require maatwebsite/exce ...

[PHP] 对象池模式-创建型设计模式

最重要的特征是,有两个数组存对象,忙的数组和闲的数组.当使用对象后,不是立即销毁对象,而是放回池子闲的数组里面,下次使用直接拿,拿到后放到忙的数组里.当拿不到的时候就再创建新 class WorkerPool { /** * @var 忙的数组 */ private array $occupiedW ...

123···73>