PHP 面向 StackOverflow 编程

0x00 前言我从 Laravel 接触到了 Whoops,这款非常好的错误展示包,虽然它提供了一个根据错误信息跳转到 StackOverflow 搜索页的链接,但对于我这种懒人来说当然是希望在报错页面显示根据错误信息搜索出来的结果啊。嗯,然后我就造了这个玩意 whoops-stackoverflow。 0x01...

Slim 框架源码解读

0x00 前言Slim 是由《PHP The Right Way》作者开发的一款 PHP 微框架,代码量不算多(比起其它重型框架来说),号称可以一下午就阅读完(我觉得前提是熟悉 Slim 所用的组件)。不过比起其它框架来说真的还算容易阅读的了,所以是比较适合我这种新手学习一款框架。因为文章篇幅限制所以采用抓大放小...

PHP Clourse(闭包类) 浅析

0x00 前言 闭包是指在创建时封装周围状态的函数。即使闭包所在的环境不存在了,闭包中封装的状态依然存在。 在 PHP 里所有的闭包都是 Clourse 类所实例化的一个对象,也就是说闭包与其他 PHP 对象没有什么不同。而一个对象就必然有其方法和属性,这篇文章将总结 PHP 中闭包的基础用法和 Clourse...

感悟

夫夷以近,则游者众;险以远,则至者少。而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也。——《游褒禅山记》 王安石 高中时学到王安石的《游褒禅山记》 便觉得这句话很霸气,高考后的日子里我早已忘却全文,但在我遇到困难和挫折的时候脑海都会浮起这句话。这句话给我很大的激励和勇气,当我了解到...

备忘 Nginx 基本配置

0x00 配置结构1234567891011121314151617181920212223242526272829303132333435# 全局配置块...# events 配置块events { ...}# http 配置块http{ # http 全局配置块 ...

备忘 SQL 基础语句

0x00 查询简单查询123456789-- 查询 users 表包含所有列的所有行SELECT * FROM `users`;-- 指定列-- 查询 users 表包含 id 和 name 两列的所有行SELECT `id`, `name` FROM `users`;-- 查询 users 表 name 和 e...

备忘 PHP PDO 基础知识

0x00 前言用久了 Laravel ORM 之后真的觉得通过 PDO 操作数据库的方式真的是弱爆了,但是作为基础知识还是要了解一下的。万一面试被搞到哑口无言岂不是白白错过工作机会/(ㄒoㄒ)/~~,所以还是决定整理一下关于 PDO 操作的常识。其实 PDO 的核心其实就只有三个类 PDO、PDOStatemen...

PHP 输出缓冲区应用

0x00 前言在平时使用框架的时候我发现我们可以随意的设置 HTTP 头,而不用担心之前的程序是否输出过内容。但在 PHP 官网手册中设置 HTTP 头函数 header 和设置 Cookie 函数 setcookie 却有着如下警告: 请注意 header() 必须在任何实际输出之前调用,不管是普通的 HTM...

PHP 异常处理三连 try catch finally

0x00 简单应用当执行部分可能抛出异常的代码时,catch 可以捕捉到 try 代码段内抛出的异常(前提是 catch 的参数类型和抛出的异常类型相符),类型不符合的异常会继续向上层抛出。比如以下代码: 直接捕获: 1234567891011function foo(){ throw new E...

PHP 框架中间件实现

0x00 前言中间件是很多 PHP 框架都提供的功能,在初次认识它的时候我感到惊讶和兴奋。因为它的作用太强大了,在没有中间件之前我们不得不将权限验证和一些公共操作都写在控制器方法里,然后控制器就会变得很臃肿,降低了可读性和可维护性。但有了中间件我们就可以这些操作都写在中间件里,然后通过使用不同的中间件组合不仅能够...