本文 GitBook 地址:https://legacy.gitbook.com/book/leoyang90/laravel-source-analysis/details
在学习完 Laravel 中的日志处理模块之后,接下来马上就进入到错误和异常的学习中。其实通过之前 PHP 基础相关的学习,我们已经了解到 PHP7 中的大部分错误都已经可以通过异常来进行处理了,而我们的 Laravel 框架,基本全是通过异常来进行处理的。
本文译自 Matt Stauffer 的系列文章. ---- 之前完全忘了要把这个 Laravel 5 的系列博客写完,不过最近看到了一篇关于属性转换的简介 Laravel 5 Eloquent Attribute Casting is Awesome, 所以我决定把这个特性加到我的系列文章中。官方文档的 Eloquent 相关部分在这里。 什么是属性转换 转换一个属性值的意思是把它转换成某个特定的数据类型(或者是为了确保它是某个特定的数据类型)。数据类型我们都很熟悉了,比如 integer 或者 boo
异常处理是编程中十分重要但也最容易被人忽视的语言特性,它为开发者提供了处理程序运行时错误的机制,对于程序设计来说正确的异常处理能够防止泄露程序自身细节给用户,给开发者提供完整的错误回溯堆栈,同时也能提高程序的健壮性。
YAML 这个东西,说实话,自己用得并不多。在学习自动化测试相关的内容时候,接触过使用这种配置文件来配置 Travis CI 的持续集成操作,当然,当时也是以学习性质为主的。虽说接触得不多,但也知道确实这种配置格式的写法基本上已经成为了现在的主流。所以关于具体的 YAML 相关的内容在这里就不多做解释了,还不是太了解的同学可以自行查阅一些相关的文档。
Laravel 包含各种全局辅助函数。 laravel 中包含大量辅助函数,您可以使用它们来简化开发工作流程。 在这里,我将编写 10 个最好的 laravel 帮助函数,用于使我的开发更容易。 您必须考虑在必要时使用它们。
如果你之前通过 Laravel 内置的字符串函数处理过字符串的话,可能对 Laravel 中已存在的 Illuminate\Support\Str 类非常熟悉。Laravel 7 现在基于这些函数提供了一个更加面向对象的、更加流畅的字符串操作库。你可以使用 String::of 创建一个 Illuminate\Support\Stringable 对象,然后基于该对象提供的方法以链式的操作对字符串进行处理:
前言 Laravel 的加密机制使用 OpenSSL 提供 AES-256 和 AES-128 的加密,本文将详细介绍关于Laravel中encrypt和decrypt的实现,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
第一个参数是咱要处理的字符串,第二个参数是要排除的字符(默认 \t\n\r\0\x0B)
下面的一个实例将课程数据存放在数组中,使用 count()函数递归地统计数组中数量并输出,具体代码如下:
Laravel 5.5 已经确定预计在 2017年 Laravel 欧洲大会上正式发布。这次重大升级,也带来了一些新的字符串相关的辅助方法。 以下介绍一些最近比较火的字符串辅助方法,他们最近已经得到了许多 Laravel 开发者的喜爱。 str_start() 方法 str_start() 辅助方法是由 Caleb Porzio 在 Laravel 5.4 分支中贡献的。这个方法用于确定字符串的开头有且仅有一个特定的字符。 比如我们在进行 URL 或者 Path 的拼接时,如何确保只含一个路径分隔符"/"呢
我以为只要在验证的数据 9 是整数,他就会直接按数字的方式验证,结果直接打印了错误消息The age must be 9 characters.这个错误消息很明显的是提示字符串长度的, 然后看了一下才发现还需要加上一个条件。numeric或者integer,
web应用程序公开访问几乎没有不带用户交互的,难免要接收用户输入的奇奇怪怪的东西。对于后端程序,必须对输入的内容进行有效性过滤。
Laravel及官方发布的包皆遵循 语义版本化。主要框架版本每六个月发布一次 (~2月和~8月),而次要和补丁版本可能每周发布一次。次要版本和补丁 决不 包含非兼容性更改。
Illuminate\Support\Collection 类提供了一个更具可读性的、更便于处理数组数据的封装,具体例子看下面的代码。
在laravel项目开发中,经常使用到公共函数,那如何在laravel配置全局公共函数呢??下面话不多说了,来一起看看详细的介绍吧
2020年11月底, 在为我们的一个客户进行安全审计时, 我们发现了一个基于Laravel的网站. 虽然这个网站的安全状态很好, 但我们注意到它是在调试模式下运行的, 因此显示了大量的错误信息, 包括堆栈痕迹:
大家知道,通过python可以很容易实现各类数据结构,例如列表。但在bash中,实现一个列表相对来说会比较复杂。
从控制器内组装好的数据渲染到视图文件,上一章我们演示了简单的单变量数值访问。 laravel的模板系统,还提供了很多常用的编程语言的语法结构,其实是PHP的变体, 可以让编程人员更好地掌控HTML输出。
Throwable 是能被 throw 语句抛出的最基本的接口(interface),包含了 Error 和 Exception 。
问题同样困扰好久,前几天是CSRF认证问题,今天遇到了批量删除选择选中元素的问题,网上查找了好多代码,可算是把这个业务逻辑实现了,鼓掌,接下来听听我的解决方案吧,主要就是LayUI中的from组件的checkbox监听事件,接下来看debug过程吧!
在 Laravel 项目中,由于测试,有时候用 php artisan make:migration create_xxx_table 创建数据库迁移。如果把创建的迁移文件 database/migrations/2016_09_13_081736_create_xxx_table.php 文件给删除了,再次执行 php artisan make:migration create_xxx_table 会报错:
trait的出现就是一种解决需要多继承场景的方式。 使用场景是如果多个类都要用到同样的属性或者方法,这个时候使用Traits可以方便的给类增加这些属性或方法,而不用每个类都去继承一个类,如果说继承类是竖向扩展一个类,那么Traits是横向扩展一个类,从而实现代码复用。
IOC (inversion of controller) 叫做控制反转模式,也可以称为 (dependency injection ) 依赖注入模式。要理解依赖注入的概念我们先理解下什么依赖
本文说一个小的知识点,在表单验证中,对数组数据进行验证, 我们需要进行两项,一项是数组本身的验证,一项是数组元素的验证。
Laravel 提供了一些超赞的组件,在我看来,它是目前所有 Web 框架中提供组件支持最好的一个。它不仅提供了开箱即用的视图(views)、身份认证(authentication)、会话(sessions)、缓存(caching)、Eloquent、队列(queues)、数据校验(data validation)等组件。甚至还提供了开发工具(Valet 和 Homestead)。
今天在进行Laravel开发的时候,发现了比较坑的一点。 按照默认情况来说,比如表单提交,如果我们提交了这个字段,但是这个字段为空字符串。在Laravel中会自动转义成Null。这个为什么呢?
当我们的应用程序访问较少时(例如在项目初期阶段),直接进行项目编码就可以解决大多数问题。项目中的搜索功能也是如此,没必要在一开始就引入完整的第三方类库进行搜索功能支持。大多数情况下使用 Eloquent 的查询功能就可以完成基本的搜索处理。
laravel引用了强大的Carbon日期时间处理库用于日期时间的操作, 并且在数据库的格式化中使用该库。本文就说一说程序中如何方便地使用 Carbon自定义格式。
上篇教程,学院君给大家介绍了 PHP 中变量和常量的声明和使用,并且提到,PHP 是弱类型语言,在声明变量时,无需指定类型,变量值对应的数据类型会在运行时进行判断,所以虽然无需指定类型,但实际上还是有类型的,只不过这个判定工作交给了 PHP 底层引擎完成,这是以牺牲程序性能为代价换取开发效率和语言的简单性,所有的弱类型解释型语言,比如 Python、JavaScript 都是这么做的。
在静态语言(C、Java、Go)中,数组的定义通常是同一类型数据的连续序列,PHP 的数组从功能角度来说更加强大,可以包含任何数据类型,支持无限扩容,并且将传统数组和字典类型合二为一,在 PHP 中,传统的数组对应的是索引数组,字典类型对应的是关联数组,这得益于 PHP 底层通过哈希表实现数组功能。下面,我们就来简单介绍下 PHP 索引数组和关联数组的基本使用。
以上表单中,add方法就是添加文章的业务逻辑,edit方法是编辑文章咯,可是两个业务要验证的用户端输入参数都包含了title和content,所以要通过scenarios方法来声明两个场景要校验的属性名称
对于后端开发而言,前端request请求中的参数校验是一个必不可少的环节。无论传来的参数是id还是email还是其他的参数,我们都要对参数的类型、大小、格式等等做这样或者那样的校验,然后才进行逻辑处理,以确保逻辑处理时万无一失,不会出现异样。于是乎,在controller层中就会出现一大坨的校验代码,这些校验代码甚至有时候都超过了正常的逻辑代码的数量,对于程序的扩展和维护很不利的。
对于数据库DBA可能更习惯从SQL的角度出发,从SQL现有的语言结构和功能上解决问题。比如查询一个product表,要求查询条件中,product_catagory 表的某些字段存在才能才回。
PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows、Linux等)上配置,不受操作系统的限制,所以叫跨平台
Laravel 提供给了比较强大的ORM数据库操作方式,如果在数据库端考虑到性能问题, 难以打开MySQL的慢日志,或者出于审计考虑,要在系统内全程跟踪所有的SQL操作, 应该如何实现呢?不会要改写框架底层代码?
本文同步至个人博客 需要掌握的 Laravel Eloquent 搜索技术 ,转载请注明出处。
1、PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows、Linux等)上配置,不受操作系统的限制,所以叫跨平台 2、WEB开发中数据提交方式有几种?有什么区别?百度使用哪种方式? Get与post两种方式 区别: (1)url可见性:get 方式url参数可见,post 不可见 (2)可缓存性:get 方式是可以缓存的,post 方式不可以缓存。 (3)传输
路由是外界访问Laravel应用程序的通路或者说路由定义了Laravel的应用程序向外界提供服务的具体方式:通过指定的URI、HTTP请求方法以及路由参数(可选)才能正确访问到路由定义的处理程序。无论URI对应的处理程序是一个简单的闭包还是说是控制器方法没有对应的路由外界都访问不到他们,今天我们就来看看Laravel是如何来设计和实现路由的。
PHP 8.3 引入了许多新特性,同时也弃用了不少功能,以及其他变更。在本文中,我将尝试解释最新版本PHP(8.3)的新功能。8.3 中有许多新功能,这使我的默认编码语言更加优雅和开发人员友好。
在我们开发的时候,有时候我们希望不同的环境中有不同的配置参数,举例来说,你希望生产环境使用的缓存机制与本地环境不同。
创建表单请求验证 面对更复杂的验证情境中,你可以创建一个「表单请求」来处理更为复杂的逻辑。表单请求是包含验证逻辑的自定义请求类。可使用 Artisan 命令 make:request 来创建表单请求类:
之前没注意这个问题,今天发现通过 foreach 遍历数组时,新增的属性并没有添加到数组中。
本文译自 Matt Stauffer 的系列文章. ---- 如果你关注我的博客有段时间了,那你应该曾经见过我在 Laravel 环境检测问题上的各种尝试,特别使用环境变量进行检测这方面。例子 感谢 Laravel 5, 它极大地简化了环境检测环节。在 4.x 版的时候,你要创建多个基于运行环境名称的环境配置文件(比如 .env.php, .env.local.php 等)。老实说,我从来用过这个功能。但我觉得理论上你应该会把所有环境配置文件提交到代码库。但由于我们从来不提交任何环境配置文件,所以这种区分环
本文译自 Matt Stauffer 的系列文章. ---- 提示:如果你还没有看过 Laravel 5.0 之命令及处理程序 这篇文章,建议先看一下。它包括了本文所需的背景知识。 借助 Laravel 5 的命令(及命令处理程序),你可以通过封装的方式非常简单、直接地向系统发出命令。DoThis.HandleACommandThatIsTellingMeToDoThis, 它是命令式的,告诉系统要做什么事。 但有时候,不管是在命令结果中,还是在其它的上下文中,我们需要发出更抽象的通知。比如在 Larav
Laravel 的路由配置有很多,可以设置域名,设置请求协议,设置请求方式,请求路径。那么,Laravel在获取到请求之后,去匹配路由都做了些什么呢? Laravel 默认路由的验证器有四个,UriV
lumen event 与 php7 扩展 event 冲突 系统报错日志 [2020-03-17 15:27:37] lumen.ERROR: ErrorException: Cannot declare class Event, because the name is already in use in /home/web/vendor/laravel/lumen-framework/src/Application.php:653 Stack trace: #0 [internal function]:
领取专属 10元无门槛券
手把手带您无忧上云