trismegiste/php-is-magic

PHP 有用的魔法技巧库

dev-master 2013-09-27 19:12 UTC

This package is not auto-updated.

Last update: 2024-09-24 06:46:44 UTC


README

Pony

好吧,你已经知道 PHP 很慢,内存密集型,并且语法不一致。

那么,优点在哪里呢?

这种解释性语言有一些隐藏的魔法。这个库试图使用它,而不会弄乱你的项目。

尽管有搞笑的图片,这个库已经完全测试过: Build Status

Eval

"eval 是邪恶的"(听起来不错,我喜欢)。真的吗?Eval 非常强大。但是,强大的力量伴随着巨大的责任。大多数的模拟框架(例如 PHPUnit)使用 eval。所以,这是邪恶为善服务吗?似乎是这样的。

魔法方法 __call

这个魔法方法很强大,但它不能取代“强”类型提示。对于快速原型设计来说很实用,但它不适合进一步维护。谨慎使用。

color

反射

很久以前,在一个遥远的星系中,我用 VC++ 编程,RTTI 不是标准的一部分。后来,Java 有反射,但与平均速度相比非常慢。现在 PHP 有反射,并不比平均“慢”慢多少。使用它不是问题。

特质

特质非常高效。最初我很怀疑,但现在,有了良好的约定,我认为它是 PHP 的真正精华。它们具有多重继承的能力,并解决了 菱形问题

shrike

闭包

我在谈论的是绑定闭包,即与对象相关联,而不是 lambda 函数。许多设计模式(如策略和命令)都可以从闭包中受益。

使用 PHP 解析 PHP

有一个叫作 nikic/PHPParser 的出色库,它也执行一些魔法。重新定义和动态更改类是可能的,但非常慢。

harry

那么呢?

通过结合所有这些特性,我将尝试收集一些有用的魔法技巧,特别是当处理遗留代码时。我喜欢认为这里提供的工具大部分都是 模拟器,而不总是好的实践(特别是对于设计模式模拟器)

模拟器在开发早期阶段很有帮助,当时你的设计尚未完成,并且你想测试哪种模式最适合解决你的问题。好吧,至少比复制粘贴旧项目中的脚本要好一些:)

阅读此库的功能列表

备注

尽管魔法是潜在的 WTF 生成器,但我会通过强制使用接口、添加许多验证器以及防止某些工具的误用(例如 DecoratorBuilder)来尽量减少问题。

这也是探索新功能中常见模式的一种方式。例如,我相信特质将改变 PHP 框架的未来(实际上它已经开始改变了)。

文档

我为每个工具在其文件夹中编写了 README。

待办事项

  • symfony 的捆绑包