Rucheng Tang

「About web software development」

Laravel 中使用子查询动态获取关联数据

翻译:Dynamic relationships in Laravel using subqueries,推荐阅读原文。 在构建与数据库交互的 Web 应用程序时,我一直有两个目标: 将数据库查询数保持在最低限度。 将内存的使用量保持在最低水平。 这些目标会对您的应用程序的性能产生巨大影响。 开发人员通常非常擅长第一个目标。我们知道出现 N+1 查询的问题原因,并使用预加...

在 Laravel 中通过关联关系列进行排序

翻译:Ordering database queries by relationship columns in Laravel,推荐阅读原文。 在本文中,我们将探索如何通过 Eloquent 关联关系的值(列)对数据库查询进行排序。例如,可能我们想根据公司名称对用户列表进行排序。 实现起来因关联关系的类型而异。然而,它总是会涉及到按单独的数据库表中的列排序,这就是让它有点棘手的原因,特别...

Javascript 扩展运算符

扩展运算符,...,最早是在 ES6(ES2015)引入的,仅用于数组,它很受欢迎,在 ES9(ES2018)为对象引入了对应的特性。本文介绍扩展运算符的实际应用。 拷贝数组或对象 当我们需要修改数组或对象,但又不希望改变原有数组或对象时,就需要拷贝一份数据: 拷贝数组 浅拷贝(Shallow-cloning)数组时,可以使用更简短的展开语法。 1 2 3 4 5 6 7 let ...

PHP 处理异常行为的最佳实践

从组织结构开始,以免日后进行昂贵的重构

为什么要使用异常? 《PHP 错误处理》 这篇文章详细地介绍了在什么情况下应该使用异常,什么情况下使用特例模式替代异常。很多人也许会觉得使用异常很简单,直接 throw new 一个异常即可,事实并非如此,这就是这篇文章要讨论的话题,如何组织异常,避免我们混乱使用异常,从一个噩梦(检查泛滥)到另一个噩梦(异常混乱)。 我们先来看一段简单的代码: 1 2 3 4 5 $user = $th...

PHP 错误处理

不要给调用你代码的人增加麻烦

我们在程序开发过程中,不光要考虑程序的默认行为,同时还得考虑各种非正常情况。简言之,程序可能会出错,当错误发生时,我们就有责任确保代码照常工作。在我们的日常工作中,会发现许多程序完全由错误处理所占据。所谓占据,并不是说错误处理就是全部。我的意思是几乎无法看明白代码所做的事,因为到处都是凌乱的错误处理代码。如何处理错误呢? 先来一个简单的示例,我们通过 UserRepository 获取一个...