PHP 没有多继承的原因
多年来,PHP 作为一种语言已经有了很大的发展。从最初由 Rasmus Lerdorf 作为他的业余项目开始的一种简单的函数式脚本语言,到支持面向对象编程功能 PHP,已经走过了漫长的道路。尽管 PHP 在其每一个版本中都在实现和改进面向对象编程的功能,但有一个功能是缺失的,我一直想知道为什么这些年来 PHP 中没有这个功能,即多继承。PHP 不支持多继承有...
PHP 中使用组合优先于继承的原因
在面向对象编程中,类可以通过两种方式实现多态行为:“继承”和“组合”。继承是一种将对象或类建立在另一个对象或类的基础上并保留类似实现的机制。换句话说,使用继承,类从其父类(无论是直接的还是间接的)继承字段和方法。子类可以覆盖它继承的方法,也可以隐藏它继承的字段或方法。继承在类之间建立了一种“is-a”关系。例如,“汽车就是车辆”。意思是汽车“继承”了汽车的所...
[Laravel 扩展包]在 Laravel 中快速管理临时文件
我最近有一个队列作业,需要将文件临时下载到服务器,进行处理,最后清理临时文件。这在 PHP 中并不困难,你可能已经使用以下方式开始:file_put_contents('/tmp/' . $tmpFile, file_get_contents($video));要使之更能跨平台兼容,获取你可用使用 PHP 内置的 sys_get_temp_dir() 函数获...
物联网协议之 NB-IoT
概述NB-IoT(Narrowband Internet of Things)是一种低功耗、窄带宽的无线通信技术,专门用于物联网设备的通信。它采用了窄带宽的频段,可以在低功耗下实现长距离传输和大规模连接。NB-IoT 的主要用途是什么?NB-IoT 的主要用途是连接大量低功耗、低数据率的物联网设备,例如智能电表、智能家居、智能农业、智能城市等。它可以提供广域...
本地存储 Window.localStorage 介绍
只读的localStorage 属性允许你访问一个Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。localStorage 类似 sessionStorage,但其区别在于:存储在 localStorage 的数据可以长期保留;而当页面会话结束——也就是说,当页面被关闭时,存储在 sessionStorage 的数...
查询构造器 whereAll() 和 whereAny() 方法添加到 Laravel 10.47
Laravel 团队发布了 v10.47,它向查询构造器添加了 whereAll 和 whereAny 方法,以及在 Collection sortByMany 方法使用排序 flag 的能力,等等。此次发布可能是 Laravel 11 于2024年3月12日(星期二)发布之前 10.x 分支的最后一次发布。Laravel 10 将继续接受漏洞修复,直到 2...
PHP 8.4: 新增 request_parse_body 函数
PHP自动解析 HTTP POST 请求,以填充 $_POST 和 $_FILES 超级全局变量。然而,使用 PUT 和 PATCH 等方法的其他 HTTP 请求不会自动解析,而是由 PHP 应用来解析请求数据。随着越来越多地使用 HTTP 方法(如 PUT、DELETE 和 PATCH)的 REST API 的流行,一致地解析 HTTP 请求数据非常重要。...
Tailwind 已开源 V4 Alpha
Tailwind 团队公布了他们在 Tailwind CSS v4 alpha 上的开源进展。该版本是对如何为 web 应用编写 CSS 的很早期的一览。以下是我们从迄今为止关于 V4 的公告中了解到的信息:Tailwind V4 依旧支持 tailwind.config.js 以使迁移到 v4 更加容易,不过将来会是 CSS 优先的配置体验:@import...
Laravel 11 升级指南
更新依赖、应用结构、浮点型类型、修改数据库字段、SQLite 最低版本、更新 Sanctum、Carbon 3、密码重新哈希、按秒限流、移除 Doctrine DBAL、Eloquent 模型的 casts 方法、Spatial 类型、Spatie Once 包、Enumerable Contract、UserProvider Contract、...
Laravel 11 精简配置文件
Laravel 11 中,我最喜欢的功能之一是精简的配置文件。在 Laravel 11 的开发过程中,所有配置文件都从默认的 Laravel 安装中删除。然而,在发布前几周,Taylor 决定在默认的 Laravel 安装中重新包含精简版的配置文件,但保留了删除任何不需要的文件或选项的选项。让我们更深入地了解这是如何避免错误并获得尽可能精简的应用程序的。毕竟...