让代码更具可读性小技巧
你是否维护过他人的项目?一个让你一打开就不寒而栗的项目?即使还未细读代码,你已经知道它一团糟了。可能你也找不出具体问题,不过这些代码就是看起来就很怪异,感觉哪里不对。编写整洁的代码;让你可以在写完一两年后回看还是能感觉修改起来很舒适的代码,是个艺术。这绝对是一个主观的话题——别误会我的意思;但“编写可读的PHP”有很多部分是可以掌握的。首先我们要提的是,一个...
本地网络测试 Laravel 网站
开发网站时,我们常常会在真实的移动设备上预览查看效果。或者让家人在不使用电脑大动干戈的情况下,帮助预览和测试。本文将介绍一个简单快捷的方法,让你可以使用任何设备在本地网络中查看你的网站。首先,几个带有解决方案的应用程序使用Ngrok是比较常用的一种方法。Ngrok很好看,很神奇,它是一个HTTP/HTTPS隧道,允许任何人预览您在本地机器上的网站,而无需进行...
如何解决 Laravel 队列 "ModelNotFoundException" 问题
Laravel 因为没有找到相关模型而导致队列任务失败,该怎么办?让我们一起看看队列任务中的 ModelNotFoundExpection 异常有哪些处理方法。Illuminate\Database\Eloquent\ModelNotFoundException: No query results for model [App\Models\User]这是一...
Laravel 中如何在数据库事务中延迟队列及事件监听器
如果在数据库事务期间触发了队列或监听,可能会因为数据回滚而导致数据不一致。本文将介绍如何妥善处理。Laravel 开发者可能会碰到这么一个问题:在数据库事务期间触发了队列或事件监听。这一问题可能导致 ModelNotFoundException、数据不一致以及其他一些可能影响应用可靠性的问题。本文将说明数据库事务为什么重要、使用时会碰到哪些常见问题以及如何在...
PostgreSQL: 详解索引 Include 子句
有些数据库 —— 比如 Microsoft SQL Server、IBM Db2 及发行版11之后的PostgreSQL —— 在创建索引语句时都支持 include 子句。PostgreSQL 引入这个特性是促使我发这篇长文解释 include 条件的直接原因。深入细节之前,我们先回顾一些(非聚簇)B-树的索引是如何工作的以及全能的index-only s...
现代 PHP:使用 Sodium 扩展对数据进行加密/解密
多年来,PHP 增加了对几个扩展、库和算法的支持,以加密和解密数据。伴随着几个具有不同维护级别的库和扩展,每个算法都可能有优缺点,有些算法甚至天生不安全,因此很难选择合适的PHP扩展、库和加密结构,并平衡安全性和性能。mcrypt是为PHP带来加密/解密功能的最古老的PHP扩展之一。它不再被维护,并且在PHP 7.2中PHP将它解除了捆绑。OpenSSL...
在 PHP 中使用 Curl 压缩 HTTP 请求
压缩是提升网页性能的一个重要且有效的手段。对于文本资源如 HTML 文件、CSS/JS 文件、SVG 文件等,传输之前在服务器上对资源进行压缩,并在浏览器中解压缩可以极大减少带宽及传输时间。对服务器和浏览器来说,压缩过程是不太透明的,服务器在发送给浏览器器前对资源进行压缩,浏览器在渲染之前进行解压缩。服务端软件和前端开发者不需要处理压缩/解压缩过程。近年来开发出...
PHP 8.1: First-class 可调用(callable)语法
PHP 8.1 及以上版本支持在当前作用域中创建 callable 的新语法。相比用 Closure::fromCallable,借助该语法使用函数或方法的调用方式来创建 callable 使之更容易。Closure::fromCallable 从PHP callable(函数名,方法或匿名函数)中返回一个 callable (Closure 对象) 。该语...
PHP 8.1 - IMAP扩展:imap 资源使用 IMAP\Connection 类对象
PHP 8.1 中,imap 扩展的 IMAP 连接资源迁移到了类对象上。PHP 8.1 之前,imap_open() 函数返回一个 imap 类型的资源对象。从 PHP 8.1 开始,它返回 IMAP\Connection 类实例。
laravel 分页怎么带参数
在使用 Laravel 分页功能时,我们可能需要在每个页面中携带一些参数,比如搜索关键字、排序方式等等。本文将介绍如何在 Laravel 中实现带参数的分页功能。首先,我们需要了解 Laravel 分页功能的基本用法。