如何在 Ubuntu 18.04 上安装 OpenCart
通过本教程你将学会如何在 Ubuntu 18.04 服务器上安装 OpenCart。需求 :1.域名2.Ubuntu 上安装 Nginx 服务器3.SSL 证书。更新系统软件包至最新版,并使用下面命令进行安装:sudo apt update && sudo apt install unzip 步骤 1 - 创建 MySQL ...
PHP 8.1: MySQLi: 执行时绑定
PHP 8.1 起,MySQLi 扩展的 mysqli_stmt_execute 函数及 mysqli_stmt::execute 方法(别名) 接收一个 $params 参数。如果传入参数,传入的值会被当作字符串绑定到语句中。此前,参数化的 SQL 查询需要调用 bind_param 显式绑定变量:$statement = $db->prepare(...)
PHP 8.1: 显式八进制数字表示法
PHP 支持多种数字系统,包括默认的十进制数字、二进制数字、八进制数字及十六进制数。十进制之外的数字系统都有它们自己的前缀:十六进制 0x 前缀: e.g. 0x11 = 17二进制 0b 前缀: e.g. 0b11 = 3八进制 0 前缀: e.g. 011 = 9PHP 8.1 之后,八进制也支持 0o(零及字母o)前缀,这意味着八进制字面量可以更明显及...
PHP 8.1: 相交类型(Intersection Types)
PHP 8.1 支持相交类型(Intersection Types),它允许为参数、属性或返回类型声明类型,并强制值属于所有声明的类/接口类型。这与允许任何已声明类型的联合类型(Union Type)相反。PHP 8.1的交集类型实现被称为“纯”交集类型,因为不允许在同一声明中组合联合类型和交集类型。交集类型是通过使用 & 将类/接口名称组合来声明的...
PHP 8.1 新特性解析: 新增 #[ReturnTypeWillChange] 属性
#[\ReturnTypeWillChange] 是 PHP 8.1 引入的新特性,这表示不匹配的暂定返回类型不应该发出弃用通知。PHP 8.0 之前的版本将属性语法解析为代码注释,不会导致任何语法错误。在类方法中添加 #[\ReturnTypeWillChange] 属性不会导致任何问题,但在PHP 8.1中可以忽略了弃用通知。这是添加到 PHP 的第一个...
禁用 Composer script 处理的超时时间
对于我项目中的重复过程,我通常使用 Composer 的 script 功能来简化我自己和我的团队运行脚本和执行二进制文件的过程。我经常遇到的一件事是长时间运行的进程,如观察者脚本或后台进程,超过了 Composer 默认的300秒脚本超时。我最常看到的一个例子是大型测试套件,它可能需要5分钟以上的时间来运行,通常是端到端测试。{ "scripts"...
创建自己的 PHP 服务容器 - 最小容器
本文将介绍 PHP 中是如何创建自己服务容器,用于依赖注入。我将从最简单的 PSR-11 容器,并逐步添加各种特性直至我们有一个强大、通用的容器。"服务容器(service container)" 是什么?服务容器是一个 PHP 对象,用于负责其他对象的实例化。我们告诉容器如何初始化对象,然后在项目需要它的实例时,再去请求。PSR-11 是什么?PSR-11...
创建自己的 PHP 模板引擎 - 渲染 & Echo
我们来创建一个小型 PHP 模板引擎!本文主要关注模板的渲染及 echo 输出能被 htmlspecialchars() 转义的数据。在我们开始编写代码之前,我们需要注意任何编程项目中最重要的部分——为项目命名。我将称之为“Stencil”。模板本身都将是纯PHP。我们不会创建任何像 Twig 或 Blade 这样的特殊语法,我们将只关注模板功能。我们将从创...
使用 GoLang 协程处理 Laravel 队列任务
Laravel 包含一个优秀的队列组件,它允许我们将耗时的任务委派给后台进程。它使我们能够更快地响应请求,从而处理更多的请求,从而扩展我们的 web 服务。队列进程,无论优化得多么好,一次只能处理一个作业。这意味着我们需要更多的进程来同时处理更多的工作。每个工作进程都是一个 PHP 进程,每个进程都通过拥有自己的内存空间而与其他进程隔离。如果我们启动过多的进...
centos7 安装libzip1.9.2解决 No package 'libzip' found
在编译php8.1.3的时候遇到了No package 'libzip' found,看了下报错,是需要libzip>= 0.11,而yum install的是0.10版本,在发文日看见最新版本为1.9.2,故本文详解如何安装lizip1.9.2。卸载老版本的libzip: yum remove libzip libzip-devel