50个非常有用的PHP工具.docx
《50个非常有用的PHP工具.docx》由会员分享,可在线阅读,更多相关《50个非常有用的PHP工具.docx(16页珍藏版)》请在冰豆网上搜索。
50个非常有用的PHP工具
50个非常有用的PHP工具
PHP是使用最为广泛的开源服务器端脚本语言之一,当然PHP并不是速度最快的,但它却是最常用的脚本语言。
这里有50个有益的PHP工具,可以大大提高你的编程工作:
调试工具
∙Webgrind
∙Xdebug
∙GubedPHPDebugger
∙DBG
∙PHP_Debug
∙PHP_Dyn
∙MacGDBp
测试和优化工具
∙PHPUnit
∙SimpleTest
∙Selenium
∙PHP_CodeSniffer
∙dBug
∙PHPProfileClass
文档工具
∙phpDocumentor
∙PHPDOX
安全工具
∙Securimage:
验证码工具。
∙Scavenger
∙PHP-IDS
∙Pixy:
代码检查工具。
图形处理
∙PHP/SWFCharts
∙pChart–achart-drawingPHPlibrary
∙WideImage
∙MagickWandForPHP
代码优化
∙PHP_Beautifier
∙PHPCodeBeautifier
∙GeSHi–GenericSyntaxHighlighter
版本控制系统
∙Phing
∙xinc
有用的拓展,使用工具和类
∙SimplePie:
PHPRSS解析程序
∙HTMLPurifier:
可以用来移除所有恶意代码(XSS),而且还能确保你的页面遵循W3C的标准规范。
∙TCPDF:
一个用于快速生成PDF文件的PHP5函数包。
∙htmlSQL:
一个是你可以方便的对HTML和XML内容方便的使用类似SQL语句进行检索的PHP类。
∙TheGreatestPHPSnippetFileEver(UsingQuicktextforNotepad++)
∙Creole:
用PHP5编写,是一个基于真正意义的OO的层,API接口以JDBC为基础。
∙PHPLinq:
用SQL语法操作PHP数组。
∙PHPMathPublisher:
作者是一位法国中学数学老师。
∙phpMyAdmin:
可以通过互联网在线控制和操作MySQL。
∙PHPExcel:
相当强大的MSOfficeExcel文档生成类库。
∙Phormer:
一个轻量级,强大的PHP在线相册。
∙xajaxPHPClassLibrary:
一个开源的PHP类库,用来构建WEB上的Ajax程序。
∙PHPUserClass:
用户管理。
∙PHP-GTK:
为了证明PHP是一种远远超越网络应用程序的有效的工具而开发的。
使用PHP-GTK你可以建立独立的GUI(用户图形界面)应用程序。
在线工具和资源
∙Minify!
:
使用PHP5开发的用于合并压缩js/css文件的应用程序。
合并压缩之后的结果可通过HTTPgzip/deflate及一些相关头,优化客户端缓存。
∙HTTP_StaticMerger:
自动“合并”CSS和JavaScript文件。
∙PHPObjectGenerator:
一个开源的PHP代码生成器。
它能够为你的PHP4/PHP5应用程序生成简洁和可测试的面向对象代码。
∙gotAPI/PHP
∙koders:
开放源代码搜索。
∙PECL:
含有PHP开发组提供的不同扩展库的信息。
浏览器中的工具(Firefox插件)
∙FirePHP:
是基于Firebug的一个扩展,可以用来在Firebug的console中方便的输出php的调试信息又不影响php程序的正常运行。
∙phpLangEditor:
是一个用来翻译各种PHP变数的工具.
∙PHPLookup:
是一个内置的搜索栏,以帮助您快速查找引用的PHP语法。
∙PHPManualSearch:
一个方便的搜索栏,从您的Web浏览器中搜索官方PHP文档。
PHP框架
∙Dwoo:
一个PHP5的模板引擎。
∙CodeIgniter:
帮助你编写Web应用程序的敏捷开源PHP框架。
∙YIIFramework一个高性能的基于组件的PHP框架。
∙Solar
∙symfony:
一个开源的PHPWeb框架。
目的是加速Web应用的创建与维护。
∙PEAR
∙Propel:
是一个适用于PHP5的OR映射(ObjectRelationalMapping)框架。
它允许你使用对象代替SQL来读写数据库表格中的行。
∙{{macro}}templateengine
∙ZendFramework:
是一个开放源代码的PHP5开发框架,可用于来开发web程序和服务。
∙Qcodo:
是一个适用于敏捷开发基于PHP5采用MVC架构与CRUD代码生成功能的框架。
∙SAJAX:
Sajax是一种制作Ajax应用程序的模块化方式,通过预定的、动态的函数调用,使得应用程序的开发过程更加平滑。
∙Smarty:
用PHP实现MVC开发模式的逻辑层和表示层的模板引擎。
∙CakePHP:
是一个开源的PHPonrails的full-stack框架。
∙Savant2:
是一套直接使用PHPfunction,但是做了合理的限制的PHP模板引擎。
∙PHPSpec:
PHPSpec是一个简单而直观的PHP框架。
IDEs和Editors
∙PHPEclipse:
相当强大的一个Eclipse下开发PHP的插件,包括的功能有:
PHP语法分析,调试,代码格式化,大纲视图,代码模板定制等。
∙PhpED:
内部调试器。
∙phpDesigner:
针对PHP网页的编写所设计的程序。
∙ZendStudio:
一个屡获大奖的专业PHP集成开发环境,具备功能强大的专业编辑工具和调试工具,支持PHP语法加亮显示。
∙AptanaPHP:
一个开源的IDE,主要致力于浏览器端的开发。
∙PDT:
一个开发工具框架,致力于在Eclipse平台之上提供一个功能完整的PHP集成开发环境。
∙VS.Php:
通过安装这个插件,我们可以在VisualStudio.Net这个市场中最流行的IDE中编译、编辑、配置PHP程序。
∙PHPEdit:
这款IDE软件提供用于突出语法显示、代码提示、代码识别,一个集成的PHP调试器以及一个帮助生成器工具。
补充资源
∙PHPFunctionReference
∙30UsefulPHPClassesandComponents
∙PHPadvent2008
∙Usefulin-browserdevelopmenttoolsforPHP
∙PHPClasses.org
∙PHPDeveloper’sToolbox
∙Scavenger
∙PHP-IDS
∙Pixy:
PHPSecurityScanner
国外主流的PHP框架比较
最近简单的使用了目前在国内用的比较多的几个主流国外PHP框架(不包括国内框架),大致对这些框架有个直观上的感受,简单分享一下,对于哪些做框架选型的时候,权当一个参考。
主要参考的框架包括:
CodeIgniter、CakePHP、ZendFramework、Symfony
说明:
我对很多框架也没有认真使用,只是简单试用了一下,可能很多看法不成熟或者是错误的,请大家指正,一起成长。
【CodeIgniter】
官方网站:
中文网站:
中文手册:
视频教程:
测试版本:
CodeIgniter_1.6.1
优点:
1.配置简单,全部的配置使用PHP脚本来配置,执行效率高;具有基本的路由功能,能够进行一定程度的路由;具有初步的Layout功能,能够制作一定程度的界面外观;数据库层封装的不错,具有基本的MVC功能
2.快速简洁,代码不多,执行性能高,框架简单,容易上手,学习成本低,文档详细;自带了很多简单好用的library,框架适合小型应用
缺点:
1.把Model层简单的理解为数据库操作
2.框架略显简单,只能够满足小型应用,略微不太能够满足中型应用需要
评价:
总体来说,拿CodeIgniter来完成简单快速的应用还是值得,同时能够构造一定程度的layout,便于模板的复用,数据操作层来说封装的不错,并且CodeIgniter没有使用很多太复杂的设计模式,执行性能和代码可读性上都不错。
至于附加的library也还不错,简洁高效。
【CakePHP】
官方网站:
http:
//www.cakephp.org
中文手册:
视频教程:
测试版本:
cake_1.1.19.6305
优点:
1.CakePHP是最类似于RoR的框架,包括设计方式,数据库操作的ActiveRecord方式;设计层面很优雅,没有自带多余的library,所有的功能都是纯粹的框架,执行效率还不错;数据库层的hasOne,hasMany功能很强大,对于复杂业务处理比较合适;路由功能,配置功能还不错;自动构建脚手架(scaffold)很强大;适合中型应用;基本实现过了MVC每一层;具有自动操作命令行脚本功能;
2.文档比较全,在国内推广的比较成功,大部分都知道CakePHP,学习成本中等
缺点:
1.CakePHP非常严重的问题是把Model理解为数据库层操作,严重影响了除了数据库之外的操作能力
2.CakePHP的cache功能略显薄弱,配置功能稍嫌弱;CakePHP不适合大型应用,只适合中型应用,小型应用来说略微的学习成本高了点
评价:
总体来说CakePHP框架代表了PHP框架很重要的一个时代和代表,并且目前发挥着很重要的作用,不少自己写的框架都模仿了CakePHP的方式,是个里程碑式的产品;CakePHP透露着RoR的敏捷开发方式和把数据库操作认为是唯一Model的设计思想,作为开发快速应用和原型是绝好的工具;同样,用来做Web2.0网站的开发框架,也是值得选择的。
【ZendFramework】
官方网站:
中文手册:
视频教程:
测试版本:
ZendFramework-1.5.0
优点:
1.官方出品,自带了非常多的library,框架本身使用了很多设计模式来编写,架构上很优雅,执行效率中等;MVC设计中,比较简洁,具有路由功能,配置文件比较强大(能够处理XML和phpINI),各种library很强大,是所有PHP框架中各种功能最全面的,包括它不仅是一个框架,更是一个大类库(取代PEAR),这是它的主要特色;能够直观的支持除数据库操作之外的Model层(比CodeIgniter和CakePHP强),并且能够很轻易的使用Loader功能加载其他新增加的Class;Cache功能很强大,从前端Cache到后端Cache都支持,后端Cache支持Memcache、APC、SQLite、文件等等方式;数据库操作功能很强大,支持各种驱动(适配器)
2.文档很全,在国内社区很成熟,并且目前不少Web2.0网站在使用,学习成本中等
缺点:
1.MVC功能完成比较弱,View层简单实现(跟没实现一样),无法很强大的控制前端页面
2.没有自动化脚本,创建一个应用,包括入口文件,全部必须自己手工构建,入门成本高
3.ZendFramework作为一个中型应用框架问题不大,也能够勉强作为大型应用的框架,但是作为一个很成熟的大型PHP框架来说,还需要一些努力
评价:
作为官方出品的框架,ZendFramework的野心是可以预见的,想把其他框架挤走,同时封装很多强大的类库,能够提供一站式的框架服务,并且他们的开发团队很强大,完全足够有能力开发很强大的产品出来,所以基本可以确定的是ZendFramework前途无量,如果花费更多的时间去完善框架。
同样的,ZendFramework架构本身也是比较优雅的,说明Zend官方是有很多高手的,设计理念上比较先进,虽然有一些功能实现的不够完善,比如View层,自动化脚本等等,这些都有赖于未来的升级。
总体来说ZendFramework是最值得期待的框架,当然,你目前要投入你的项目中使用也是完全没问题的。
【Symfony】
官方网站:
http:
//www.symfony-project.org
中文网站:
http:
//symfony-
权威指南:
http:
//www.symfony-project.org/book
学习参考:
测试版本:
symfony-1.0.13
优点:
1.Symfony是我了解的PHP框架中功能最强大的,而且我使用时间比较长,但是很多功能还是没有挖掘出来;它完整实现了MVC三层,封装了所有东西,包括$_POST,$_GET数据,异常处理,调试功能,数据检测;包含强大的缓存功能,自动加载Class(这个功能很爽),强大的i18n国家化支持;具有很强大的view层操作,能够零碎的包含单个多个文件;非常强大的配置功能,使用yml配置能够控制所有框架和程序运行行为,强大到让人无语;能够很随意的定义各种自己的class,并且symfony能够自动加载(autoload)这些class,能够在程序中随意调用;包含强大的多层级项目和应用管理:
Project–>Application–>Module–>Action,能够满足一个项目下多个应用的需要,并且每层可以定义自己的类库,配置文件,layout;非常强大的命令行操作功能,包括建立项目、建立应用、建立模块、刷新缓存等等;
2.Symfony绝对是开发大型复杂项目的首选,因为使用了Symfony,将大大节约开发成本,并且多人协作的时候,不会出现问题,在Project级别定义好基础Class以后,任何模块都能够重用,大大复用代码
缺点:
1.数据库操作model采用了重量级的propel和creole,不过在我测试的版本中已经把他们移到了addon里,可用可不用
2.缓存功能无法控制,每次开发调试总是缓存,需要执行symfonycc,symfonyrc来清除和重建缓存;
3.效率不是很高,特别是解析模板和读取配置文件的过程,花费时间不少;
4.学习成本很高,并且国内没有成熟的社区和文档,连中文手册都没有,相应的要掌握所有功能,需要花费比较多的时间
评价:
Symfony绝对是企业级的框架,唯一能够貌似能够跟Java领域哪些强悍框架抗衡的东西;强悍的东西,自然学习复杂,但是相应的对项目开发也比较有帮助,自然是推荐复杂的项目使用Symfony来处理,觉得是值得,后期的维护成本比较低,复用性很强。
相应的如果使用Symfony的应该都是比较复杂的互联网项目,那么相应的就要考虑关于数据库分布的问题,那么就需要抛弃Symfony自带的数据库操作层,需要自己定义,当然了,Symfony支持随意的构造model层。
【总评】
以上数款框架,各有特色,而且都是开源项目,不过框架针对的项目不一样,一般来说CodeIngiter比较适合小型项目,CakePHP和ZendFramework比较适合中型项目,Symfony比较适合大型重量级项目,在项目选型的时候,要充分考虑框架的可以定制性、扩展性,因为每个项目都无法确定你是否会随着需求的变化进行改变。
相对来说,ZendFramework和Symfony应对变化的能力比较强,特别是能够随意定制model层的Class,能够非常方便增加自己业务或者数据处理类,我是个人比较推荐在中大型项目中使用的框架。
CodeIngiter和CakePHP在中小型项目中同样能够发挥重大作用,快速开发和原型构建,非常适合目标不清晰的原型项目的开发。
了解一个框架最好的方式就是使用它,学习它最好的方式就是看视频。
:
-)
仁者见仁,智者见智,在项目挑选框架的时候,请先认真考察项目的需求和未来的变化,然后选择合适的框架,让项目开发速度和后期维护性得到一个合理的平衡,当然了,也许,自己写一个框架更适合。
PHP如何进行大型Web应用?
关于PHP的执行效率,网上的专题文章很多,多是PHP、Java几个阵营的争论;应用的方面不同,执行环境不同,效率的差别会差得比较大。
这里所说的“大型”应用不是说像Google、eBay、Yahoo这类大型网站的具体实施,只是希望大家的系统可以运行得更快更流畅,可以承载更多的用户在线,希望可以给PHP的初学者一点帮助。
这里所说的“大型”应用不是说像Google、eBay、Yahoo这类大型网站的具体实施,我也没有意图劝说读者放弃自己的概念和信仰,只是希望大家的系统可以运行得更快更流畅,可以承载更多的用户在线,希望可以给PHP的初学者一点帮助。
关于PHP的执行效率,网上的专题文章很多,多以PHP、Java几个阵营的争论开始,以一个不确定的期待结束,很少看见一个明确的结论。
确实,程序的执行效率是很难从比较中得出的。
应用的方面不同,执行环境不同,效率的差别会差得比较大。
而且效率也是需要权衡的,大家都知道汇编语言很底层,可以写出非常高效的程序,但是我还很少,应该说是几乎没看过有人用汇编做Web开发,而且有能力用汇编写出高效程序的人似乎都是值得大家仰视的,哈哈~我们没有必要去讨论PHP和汇编到底差多少,只要知道自己的PHP和别人的PHP差多少就可以了。
首先,先要明确这篇文章的前提:
必须有一台或更多的可以被自己操纵的服务器,而不是虚拟主机空间。
毕竟可以在虚拟主机上运行的通用系统已经有了很多经典的作品和成熟的框架,效率挖掘已经被前辈们做得非常出色了,它们的很多理念也被现在很多PHP用户继承和发展,越来越多的所谓“框架”也像满天繁星一样,我也不想再去写那个,因为第一我自己的水平也不怎么样,写不出什么新鲜玩意来,写出来也招人笑,第二是写这个的文章太多了,说法也太多了,混乱是造成很多富有激情的未来天才程序员夭折的最大元凶。
在独立服务器上执行的程序和在虚拟主机上可以运行的程序在效率优化方面有着很大差别。
您当然可以把一套discuz不加修改地安装在一台甚至一堆独立服务器上,不过,它真的得到最大的性能优化吗,您真的对得起这一堆服务器吗?
独立服务器指的是,使用者对这台机器有完全的控制权,包括安装、删除软件,配置系统参数甚至修改源代码。
基于这样一个开放的硬件平台,性能也不仅仅是体现在速度上,还包括安全性、稳定性等。
和虚拟主机不同,用户必须自己配置Web服务器参数,安装和配置PHP、数据库,以及安装各种乱七八糟的东西(我喜欢这么说),当然还要对它们负责。
首先提出几个名词:
执行时间、模板、数据库封装、Cache、Buffer、Hash、守护进程、crontab。
执行时间,谁都知道,就是一个程序从执行开始到执行结束所用的时间。
因为Web是瞬时的、无状态的,所以执行时间是Web程序执行效率的一个指标,它并不适合衡量C/S程序或者后台守护的程序,因为它们很多都是持续运行的。
页面执行时间的一个典型例子就是Discuz论坛页面最下方的时间显式,通常Discuz都是几毫秒到几十毫秒,和所用的平台、数据量和当前系统压力有关。
模板大家再熟悉不过,虽然有很多人只是在用,但是不知道为什么在用。
模板在传统上来说是划分逻辑层的一种途径,在MVC上结构里,它把表示层和下层分离,在实际使用中,它方便程序员和界面设计人员分工合作。
然而,现在很多场合中,由于模板的不当使用,它非但没有起到促进程序员和界面设计人员分工合作,反倒成为程序员和美工互相仇视的罪魁(我好像在以前的帖子里这样说过),很多人在抱怨他们不得不花很多时间在整理模板上。
数据库封装似乎和Java的关系更大,它对多种数据库系统提供一个统一调用接口,通常是一些封装好的类,这些类有时也完成一些比如SQL检查、过滤等工作。
PHPLIB里的DB封装、PEARDB、Adodb等都很有名,用的人也很多。
Cache和Buffer看起来好像是一种东西,Cache叫做缓存而Buffer叫做缓冲。
在硬件概念中,Cache的用途是连接两种速度不同的设备,比如寄存器和内存、CPU和PCI-Bus、IDE总线和硬盘。
Buffer的原意是类似弹簧的一种缓冲器,用来减轻或吸收冲击的震动的东西。
Buffer是一种数据预存取的方式,它用于临时存储数据并以与接收速度不同的速度传输。
Buffer的更新方式可以是按时间间隔自动刷新,而Cache则更讲究“命中率”,将当前时间段使用频繁的少量数据放到高速设备中方便读写。
在程序开发中,固然没有什么高速、低速设备,不过数据源是可以有不同读写效率的。
对于少量数据,文本文件的读写通常就要比数据库存取效率好,而同样是文本文件读写,在tmpfs上的效率就要比直接的磁盘IO效率好。
Buffer更多地体现在进程通信和队列上,很多时候并不是因为接收方没有能力更快地读取,而是没有必要更快地读取。
守护进程是一种在后台连续执行的程序,它通常是起到监视、控制流程、对外提供服务等作用。
比如Apache本身就可以被理解成一个守护进程,虽然它实际上是由很多个经常更新的进程组成(主进程是固定的)。
Crontab是UNIX/Linux的定时程序,有点像Windows的“计划任务”,它设定在多少个时间间隔后或者是某一个时间点执行特定的程序。
它通常用来完成自动更新、清除临时数据等一段时间自动执行一次的操作。
另外一个比较特别的概念(说它特别是相对于习惯了通用系统开发的人来说),是当我们拥有了一台独立的服务器之后,完全没必要把自己局限在PHP所能提供的功能范围内,当我们不知不觉地成为系统的主人后,要努力发现到这一点,我们有很多东西可以用的。
PHP不是万能的(这简直是一定的),对于它的功能上的不足,完全可以用Perl来弥补,Perl做为一种通用语言,可以提供更多的功能选择,砂砾一样密的模块给这个随意得有些变态的语言提