那些最好的轮子 - PHP篇
转载于:http://avnpc.com/pages/best-wheels-for-php
在关于不要重复造轮子的二三事一文中,交代了一些背景和想法。本篇则完全是一些干货,列举一些我用过或者即将会用的PHP轮子,基本都符合我对好轮子的定义:开源、许可证宽松、容易集成的PHP项目,目有些已经集成在EvaEngine里面,希望能帮助别人少走弯路。
日志还会陆续补充更新,同时欢迎推荐补充。
Databse 数据库ORM
Doctrine 2
- License : MIT
- Source Code
- Allo点评:Doctrine是功能最全最完善的PHP ORM,社区一直很活跃,对NoSQL也非常迅速的作出了跟进与支持。但之所以没有说Doctrine是最好的,是因为我对PHP究竟有没有必要使用如此 庞大的ORM还心存疑虑,平心而论Doctrine的入门门槛实在有些高,尤其是DBAL的提出,更是要把开发者牢牢绑定在Doctrine这艘大船上, 用与不用,还是要仔细权衡。
RedBeanPHP
- License : New BSD
- Source Code
- Allo点评:相比起Doctrine,RedBean轻巧的简直要飞起来,这两个轮子就是一组最好的比照,是大而全,还是小而精,根据项目选择吧。
Documents & Testing 文档与测试
phpDocumentor 2
- License : MIT
- Source Code
- Allo点评:老牌php文档生成工具。
Faker
- License : MIT
- Source Code
- Allo点评:Faker是一个很神奇的项目,会自动生成拟真的数据,包括用户资料、长文本、IP、日期等等,在网站上线前测试时非常好用。
Datetime 时间处理
Carbon
- License : MIT
- Source Code
- Allo点评:虽然PHP5内置的Datetime类已经足够应付一般需求,不过Carbon所提供的一些更人性化的处理则更符合实际需求,如果是时间相关的项目应该考虑使用。
File System 文件系统
Gaufrette
- License : MIT
- Source Code
- Allo点评:文件系统几乎是所有项目都会遇到的问题,Gaufrette为常见的文件系统提供了一套统一接口,包括本地文件/FTP/Dropbox/GridFS/Zip/AmazonS3等等,是大型系统必备的组件。
Front-end 前端性能
Assetic
- License : MIT
- Source Code
- Allo点评:Assetic可以说生来就是为了多模块的项目而存在的,有了Assetic,可以将分散在各模块中的前端文件编译、合并、压缩。可以让开发人员专注于代码的编写而不是前端文件的生成。
lessphp
- License : MIT
- Source Code
- Allo点评:LESS编译器的php版本。不过对于复杂的LESS项目,比如bootstrap,编译的结果与NodeJS原版还是有差异,只能做为Assetic的一个补充。
minify
- License : MIT
- Source Code
- Allo点评:PHP版本的CSS/JS压缩器。
HTTP Client HTTP客户端
Requests
- License : MIT
- Source Code
- Allo点评:Requests实现的非常灵巧,底层默认没有使用cURL而是采用fsockopen作为通信手段,非常适合集成在一些小型项目中。
Buzz
- License : MIT
- Source Code
- Allo点评:另一个轻量级的HTTP客户端实现,文档上不够丰富。独到之处在于内置了事件机制,可以更灵活的集成。
HTML & Dom
HTMLPurifier
- License : LGPL v2.1+
- Source Code
- Allo点评:凡是有WYSIWYG功能的项目,XSS以及恶意的提交都会成为一个头痛的问题。HTMLPurifier提供了完整的HTML校验与纠错,又无需安装tidy扩展。
PHP Simple HTML DOM Parser
- License : MIT
- Source Code
- Allo点评:解析HTML为DOM并且可以使用jQuery选择器操作DOM,如果需要提取HTML页面内容而不考虑高性能,那么用PHP Simple HTML DOM可以很惬意。
Image 图形处理
Imagine
- License : MIT
- Source Code
- Allo点评:Imagine为几大图形处理库提供了一个统一接口,即后台可以为Gd、Imagick、Gmagick的任意一种,而代码保持不变。其实Pear也提供过类似的库Image_Transform,但是Imagine明显更胜一筹。我还基于Imagine做了一个可以用URL操作图片的项目EvaThumber,可以更加简单的集成。
- 应用范围:缩略图生成等任何图形相关的功能。
Log处理
Monolog
- License : MIT
- Source Code
- Allo点评:可以非常简单的规定Log格式,并有众多的后端支持。虽然像Zend Framework也内置了Zend\Log这样的组件,但是Monolog仍然是最全面专业的Log处理首选方案
- 应用范围:几乎所有需要线上调试或者收集用户信息的系统
Markups 标记语言
PHP Markdown
- License : New BSD License
- Source Code
- Allo点评:Markdown在轻量级标记语言中已经俨然有一统天下的趋势,PHP Markdown应该是目前以PHP编写的最好的Markdown解析器。当然一般来说使用Markdown作为标记语言需要搭配一个JS编辑器,比如PageDown-Bootstrap
- 应用范围:任何中长篇的用户数据录入,比如用户评论、Blog等场景。可以减轻用户录入负担,并且有效的防止XSS
Payment Gateways 支付网关
Aktive Merchant for PHP
- License : MIT
- Source Code
- Allo点评:Ruby项目Active Merchant的php版本。对PayPal、Authorize.net等多家支付网关提供了统一的接口。
- 应用范围:需要支付网关的项目,有国内支付宝等网关支付需求的完全可以贡献代码
Omnipay
- License : MIT
- Source Code
- Allo点评:统一接口的支付网关,支持的支付接口更丰富一些。
Queue 任务队列
php-resque
- License : MIT
- Source Code
- Allo点评:php-resque是Ruby项目resque在php下的实现。虽然Gearman也是一个不错的选择,但是resque的构架设计更加简洁清晰,更加符合KISS原则。简单用法可以参看用PHP实现守护进程任务后台运行与多线程一文
- 应用范围:需要后台任务的系统,比如邮件发送、同步信息等需求。
Templating 模板引擎
Twig
- License : New BSD License
- Source Code
- Allo点评:如果说对模板引擎的印象还停留在Smarty的阶段,那么你真的已经落后于时代了。Twig是目前关注度最高的PHP模板引擎,比Smarty提供了更简约和易懂的语法。当然如果项目没有主题切换这样的需求,php本身就是最好的模板引擎。
- 应用范围:有皮肤、主题切换需求的项目,可以避免php模板带来的安全问题
那些最好的轮子 - PHP篇的更多相关文章
- React+DvaJS 之 hook 路由权限控制
博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP 活动 招聘 ITeye 写博客 发Chat 登录注册 原 React+DvaJS 之 hook 路由权限控制 20 ...
- TGL站长关于常见问题的回复
问题地址: http://www.thegrouplet.com/thread-112923-1-1.html 问题: 网站配有太多的模板是否影响网站加载速度 月光答复: wp不需要删除其他的模板,不 ...
- 【轮子狂魔】抛弃IIS,向天借个HttpListener - 基础篇(附带源码)
这一次我们要玩什么? 先声明一下,由于这篇是基础篇主要是通过这篇文章让大家对使用HttpListener响应Http请求有个大概了解,所以正式的花样轮子在下一篇推出,敬请期待 ^_^ 嗯哼,还有,我标 ...
- 再造轮子之网易彩票-第一季(IOS 篇 by sixleaves)
前言 在网上看了别人做的模仿网易彩票的项目, 于是也跟着用自己的想法做了一篇.写这篇博客的目的, 在于UI综合的一次小练习, 同时总结和串联其各个控件之间的应用.封装思想等.考虑到有人上不了githu ...
- 第27篇 重复造轮子---模拟IIS服务器
在写程序的时候,重复造轮子是程序员的一个大忌,很多人对重复造轮子持有反对的态度,但是我觉得这个造轮子的过程,是对于现有的知识的一个深入的探索的过程,虽然我们不可能把轮子造的那么的完善,对于现在有的东西 ...
- 再造轮子之网易彩票-第二季(IOS 篇 by sixleaves)
02-彩票项目第二季 2.封装SWPTabBar方式一 接着我们思考如何进行封装.前面已经将过了为什么要封装, 和封装达到的效果.这里我们主要有两种封装方式,分别是站在不同的角度上看待问题.虽然角度不 ...
- 【疯狂造轮子-iOS】JSON转Model系列之二
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...
- 【疯狂造轮子-iOS】JSON转Model系列之一
[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...
- ABP框架搭建项目系列教程基础版完结篇
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 经过前面十二篇的基础教程,现在终于该做个总结了. 回顾 第一篇,我们建议新手朋友们先通过ABP官网的启动模板生成解决方案,因为这样 ...
随机推荐
- PAT甲级1013. Battle Over Cities
PAT甲级1013. Battle Over Cities 题意: 将所有城市连接起来的公路在战争中是非常重要的.如果一个城市被敌人占领,所有从这个城市的高速公路都是关闭的.我们必须立即知道,如果我们 ...
- 所有浏览器打开后自动打开115.29.163.152/404.html这个网页,然后自动跳转到hao123 解决办法
这几天,电脑所有浏览器打开后自动打开115.29.163.152/404.html这个网页,然后自动跳转到hao123这个网页,网上查询没解决办法.开始自己找,搜索注册表,都无效,最后下载软件Hija ...
- java 中hashcode 与 equals的关系
equals()相等的两个对象,hashcode()一定相等: equals()不相等的两个对象,却并不能证明他们的hashcode()不相等. 反过来: hashcode()不等,一定能推出equa ...
- Java class 中public、protected 、friendly、private的区别
转载自:http://hi.baidu.com/ceoct/item/7e136a2417ba6f896f2cc33c Java class 中public.protected .friendly.p ...
- @JsonInclude(Include.NON_NULL)
前端的同事要求说尽量不要有null,可有为空串“” 或者 0 或者 [], 但尽量不要null. 所以@JsonInclude(Include.NON_NULL) 这个注解放在类头上就可以解决. 实体 ...
- Eclipse 平台Java项目文件结构
- 以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewControllers方法即可达到效果了
以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewC ...
- hibernate将connection放进threadlocal里实现数据库连接池
Why ThreadLocal? 无论如何,要编写一个多线程安全(Thread-safe)的程序是困难的,为了让线程共享资源,必须小心地对共享资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同 ...
- 在Spark程序中使用压缩
当大片连续区域进行数据存储并且存储区域中数据重复性高的状况下,数据适合进行压缩.数组或者对象序列化后的数据块可以考虑压缩.所以序列化后的数据可以压缩,使数据紧缩,减少空间开销. 1. Spark对压缩 ...
- iOS:上线的基本流程
1.创建唯一标书符App ID 首先打开开发者网站,进入证书页面,我们点击Identifiers下边App IDs选项,然后点击右上角加号,如图: 2.申请发布证书 我们点击Certificates下 ...