学院君 has written 703 articles

资深PHP工程师,Laravel学院院长

站在新起点上的新规划 —— 写在开学之际

二零一七年的八月拖着长长的尾巴即将消失在时间的尽头,九月迈着轻盈的脚步即将到来,这个时间点是中国传统的开学季,虽然学院君已经离开校园好几年了,但是每每到了这个时刻,潜意识里还是有一种仪式感:收拾心情,整理行装,准备踏上新的征程。 心情已经收拾,行装已经打点,那么路在何方?这里的路就是学院下半年的规划了,学院已经沉寂了一段时间没有搞什么大事情了,感觉再不整点动静,就真要湮没于岁月长河,泯然…

基于 Laravel 开发的自带前后端主题模板的 CMS 系统 —— WebEd

项目简介 昨天学院君给大家介绍了一款简单的模块化 CMS 系统 Borgert,提到其不足之一是没有什么可用的前端模板,后续开发成本较高,那么仿照最近流行的《河神》风格,咱们书接上文,继续来给大家说说基于 Laravel 框架开发的 CMS 那些事,今天要介绍的这个 CMS 说巧不巧,正好有一点弥补了 Borgert 没有前端模板的不足,有着自己完备的主题功能。接下来的时间,我们就来扒一…

基于 Laravel 5.4 开发的简单模块化开源 CMS 系统 —— Borgert

项目简介 Borgert 是一款基于 Laravel 5.4 框架开发的开源 CMS 系统,包含了诸多模块,例如博客、页面、商品、邮箱、图片库、用户等,你可以将其作为项目原型快速开始业务迭代开发。 代码仓库 Github:https://github.com/odirleiborgert/borgert-cms 安装步骤 项目初始化: git clone https://github.c…

服务器部署篇(四):使用现代化工具 Capistrano 自动部署应用代码到生产环境

PHP 代码早期使用 FTP 部署到生产环境,不过这种方式显然不适合集群部署,也不安全,本教程主要讨论如何使用现代化工具自动部署,这种方式简单、可预知结果,而且可逆。 版本控制 把代码纳入版本控制是现代开发人员的基本素养,我们可以使用 Git,也可以使用 SVN,对于应用开发者来说,版本控制有助于记录代码的变化,我们可以把一个时间点的代码标记为发布版本,可以回滚到之前的状态,还可以在单独…

服务器部署篇(三):php.ini 配置调优 —— 让 PHP 应用性能维持在更高水平

上一篇我们讨论了如何配置运行 PHP 应用的服务器,接下来我们要讨论的是如何调优服务器,让 PHP 应用的性能维持在更高水平。 默认安装的 PHP 就像是在百货商店里购买的普通套装,虽然合身,却不完美。调优的 PHP 就像是定做的套装,完全匹配你的尺寸。不过,需要注意的是,调优 PHP 只是提升 PHP 性能和效率的举措,对拙劣的代码和无响应的 API 调用无计可施。 php.ini文件…

服务器部署篇(二):在服务器上对 PHP-FPM 和 Nginx 进行安装配置详解

PHP-FPM PHP-FPM(PHP FastCGI Process Manager),是用于管理 PHP 进程池的软件,用于接收和处理来自 Web 服务器(如Nginx)的请求。PHP-FPM会创建一个主进程(通常以操作系统中根用户的身份运行),控制何时以及如何把 HTTP 请求转发给一个或多个子进程处理。PHP-FPM 主进程还控制着什么时候创建和销毁 PHP 子进程。PHP-FP…

服务器部署篇(一):服务器主机选择及初始化配置 —— 新增用户及密钥对认证

主机 PHP 应用开发好了之后,还需要部署到远程主机上,才能让用户访问我们提供的服务。一般来说,目前市场上提供的主机有四种:共享服务器、虚拟私有服务器(VPS)、专用服务器和 PaaS。每种主机适用场景不同,相应的价格差距也很大。 共享服务器 这种最便宜,一般来说这种适用于非开发者部署网站,比如非程序员出生的站长,部署 WordPress、Discuz 之类的 CMS 网站,不需要懂代码…

最佳实践系列(十一):深入探讨 PHP 错误异常处理机制及 Laravel 框架底层的相应实现

错误和异常是很强大的工具,能帮助我们预期意料之外的事,使用优雅的方式捕获问题。不过,错误和异常很相似,容易让人混淆,二者都表示出问题了,都会提供错误信息,而且都有错误类型。然而,错误出现的时间比异常早,错误会导致程序脚本停止执行,如果可能,错误会委托给全局错误处理程序处理,有些错误是无法恢复的。对于高版本 PHP 我们基本上只需要处理异常,不用管错误,但我们仍然必须做好防御准备,因为 P…

最佳实践系列(十):PHP 统一资源处理 API —— 流(Stream)的概述与使用详解

在现代 PHP 特性中,流或许是最出色但使用率最低的。虽然 PHP 4.3 就引入了流,但是很多开发者并不知道流的存在,因为人们很少提及流,而且流的文档也很匮乏。PHP 官方文档对流的解释如下: 流的作用是提供统一的公共函数来处理文件、网络和数据压缩等操作。简单而言,流是具有流式行为的资源对象,也就是说,流可以线性读写,并且可以通过 fseek() 之类的函数定位到流中的任何位置。 可能…

最佳实践系列(九):PHP 多字节字符串处理函数及字符编码

mbstring 扩展 我们所说的多字节字符指的是不在传统的 128 个 ASCII 字符集中的字符,比如中文字符。而 PHP 中处理字符串的函数默认假设所有字符都是 8 位字符,占用一个字节,如果使用这些 PHP 原生的字符串处理函数处理包含多字节字符的 Unicode 字符串,会得到意料之外的错误结果。 为了避免处理多字节字符出错,可以安装 mbstring 扩展。这个扩展提供了处理…