特殊的服务器环境引发的 Laravel 框架异常

一个使用 Laravel 框架的项目,在某次更新生产环境代码后报了奇怪的错误。而代码在开发环境和测试环境运行都是正常的。由于无法接触到生产环境,只能通过 PHP 引擎的源代码来猜测导致错误的原因

解决 PHP Trait 不能定义常量及成员变量冲突的问题

PHP Trait 只能定义成员变量和方法,不能定义常量。如下代码会报错:

php// test.php

trait UsageTrait
{
    const THE_CONST_NAME = 1;
}

错误消息为:

Fatal error: Traits cannot have constants in test.php

想要在不同的类中共用一组常量,可以通过接口来解决:

……

Laravel 强制 api 路由组返回 JSON

Laravel 的默认错误处理器通过 Illuminate\Http\RequestexpectsJson() 方法来决定是否将错误信息渲染成 JSON 格式输出。这要求将请求头的 Accept 字段设置为 application/json。本文提供一种方法,在尽可能减少代码的情况下,强制让 api 路由组中的所有错误响应变成 JSON 格式,而不依赖于请求的 Accept 头部

让 FastRoute 支持 URL 反向解析

FastRoute 是一款高性能路由组件,需要运行于 PHP 7.1 及以上版本。很多 PHP Web 框架都用它作为默认路由。然而这款路由组件不支持 URL 反向解析。Hyperf 框架也采用了这款路由组件,以下代码可以让 Hyperf 支持 URL 反向解析

Swoole 框架最佳实践

Swoole 是一种常驻内存进程 Reactor 模式的框架。

支持 Swoole 的 Web 框架:

  1. Laravel-Swoole
  2. Laravel-S
  3. Swoft
  4. Hyperf
  5. One
  6. EasySwoole

1 和 2 可以让 Swoole 支持 Laravel 框架;个人更倾向于 Hyperf;Swoft 很好,但也很重,如果要使用Swoft,不如考虑换个技术栈,比如 Java 或 Python。

……

PHP 和 Python 速查手册

方便 PHP 或 Python 开发人员快速入门另一门编程语言。

PHP 中的服务定位和依赖注入

尝试了很多PHP框架,有轻量级的,也有企业级的,发现解耦都做得很不好,自由度都很差。Zend framework2.0 做得还不错,就是封装太多,不够轻量。

一、创建对象

从最原始的new操作符,到abstract factory或builder等经典创建模式,都不能满足人民群众日益高涨的解耦需求。后来,MF创造了控制反转(IoC)/依赖注入(DI)理论,提供了一个完美的解耦方案。听说一个叫"春"的JAVA框架实现了完美的IoC容器,不过我也没接触过,不太了解。

……