- 标签
- PHP
一个使用 Laravel 框架的项目,在某次更新生产环境代码后报了奇怪的错误。而代码在开发环境和测试环境运行都是正常的。由于无法接触到生产环境,只能通过 PHP 引擎的源代码来猜测导致错误的原因
PHP Trait 只能定义成员变量和方法,不能定义常量。如下代码会报错:
php// test.php
trait UsageTrait
{
const THE_CONST_NAME = 1;
}
错误消息为:
Fatal error: Traits cannot have constants in test.php
想要在不同的类中共用一组常量,可以通过接口来解决:
……
Laravel 的默认错误处理器通过 Illuminate\Http\Request
的 expectsJson()
方法来决定是否将错误信息渲染成 JSON 格式输出。这要求将请求头的 Accept
字段设置为 application/json
。本文提供一种方法,在尽可能减少代码的情况下,强制让 api 路由组中的所有错误响应变成 JSON 格式,而不依赖于请求的 Accept
头部
Swoole 是一种常驻内存进程 Reactor 模式的框架。
支持 Swoole 的 Web 框架:
1 和 2 可以让 Swoole 支持 Laravel 框架;个人更倾向于 Hyperf;Swoft 很好,但也很重,如果要使用Swoft,不如考虑换个技术栈,比如 Java 或 Python。
……
方便 PHP 或 Python 开发人员快速入门另一门编程语言。
尝试了很多PHP框架,有轻量级的,也有企业级的,发现解耦都做得很不好,自由度都很差。Zend framework2.0 做得还不错,就是封装太多,不够轻量。
从最原始的new操作符,到abstract factory或builder等经典创建模式,都不能满足人民群众日益高涨的解耦需求。后来,MF创造了控制反转(IoC)/依赖注入(DI)理论,提供了一个完美的解耦方案。听说一个叫"春"的JAVA框架实现了完美的IoC容器,不过我也没接触过,不太了解。
……