Home >php教程 >php手册 >php 什么是PEAR?

php 什么是PEAR?

WBOY
WBOYOriginal
2016-06-13 12:24:511086browse

PHP爱好者必喜欢PEAR,我们的目的就是希望将PEAR介绍给PHP的程式开发人员,我个人认为引用程式库的程式开发方式已经渐渐成为趋势了,除了php、JSP外,像perl、C++也都有专属的程式库供其开发人员引用。
借着引入PEAR,php的程式开发者除了可以大幅缩減撰写程式码的工作与时间外,还可以用很简单的方式得到许多強大的动态网页功能,我将会列举许多的实例,让大家看了后,一定会啪掌叫好,並深深的迷上了PEAR。此外,程式码很容易维护,安全性高也是PEAR另2个很吸引人的优点,PAER程式库宛如模组,可以轻易的抽換与更新,完全不会影响到其他的程式码。
我们是从最基本的观念介绍起,包括PEAR这个专有名词的含意? 在那地方取得PEAR套件(package)? 如何使用PEAR套件等?
从第2章起,我们首先介绍PEAR的起源、历史与特色,让大家对PEAR有个基本的认识。
第3章我们将会介绍PEAR程式库套件的安装与管理方法,这一章是非常重要的,在使用PEAR之前,必需先把这些基本功夫学好,虽然有点复杂,但是学会之后受用无穷,让您的PHP程式开发效率倍增,功能随着递升。
第4章,是由简单的范例介绍如何引用PEAR程式库来开发PHP程序,让我们了解PEAR的一般使用方法,也为程式库的使用建立一个基本的操作流程。
在第五章我们将介绍几个用法简单又功能強大的程式库套件的范例,让大家可以在动态网页上快速建立一些您以前无法想像而又非常酷的功能,让您的程式开发功力立刻提高。例如:
◆ 让网页可以提供天气预报的功能,增加网页的附加价值。
◆ 用很简单的方法在服务器上建立网页的快取(Cache),加快网页的开啟速度。
◆ 在动态网页上搜寻某台主机有提供那些PORT号的服务。
◆ 在动态网页上查询某个网域名称(DNS),找出相对应的IP。
◆ 动态產生HTML表格。
◆ 快速建立「客戶回函」系统,让网页浏览者可以从网页上寄信给网站管理员。
◆ 让网页可以记錄网页浏览者的行为,也就是做Log。
第6章到第13章,我们会很详细地介绍一些很重要,很常用,但较为复杂的程式库套件的使用方法,这几章都是以套件为介绍的主轴,也就是說,一章只介绍一个套件,务求将这几个重要套件中较为重要功能,详细地介绍给大家。
这些套件(packages)包括:资料库连線套件、表单制作套件、身份认证套件、档案上传套件、分页套件等等。
最后,附錄A会对PEAR的官方网站做详细的介绍,当您进入PEAR的世界后,您一定会经常来这个网站寻找资料。知道如何利用官方网站,对于那些PEAR的PHP开发者而言,是十分重要的。附錄B则会对PHP的物件导向程式设计做简单的介绍。
喜欢和适合使用PEAR者分类如下:
◆ php爱好者,那一定要用PEAR,因为它絕对棒极了。
◆ PHP的专业程式设计员。您需要的是程式码的安全性,可重复性,以及良好的工作效率,PEAR絕对是必备的。
◆ PHP的程式玩家,想要开发更有趣的,功能更強的应用程式,卻不想被撰写PHP程式的一些烦恼绑缠,PEAR绝对可以满足您的要求。
◆ 自己撰写PHP程式,卻不喜欢每次都要从零开始,一字一字地敲打程式码,PEAR可以提高您的工作效率。
◆ 您想要学习功能性強,安全性高的PHP,当学会了PHP的基本语法后,可以试著使用PEAR。
◆ 您需要量身定造的PHP应用程式,換言之,您不喜欢像XOOPS之类的套装应用程式,来试试PEAR吧。
◆ 您需要容易维护的PHP应用程式,不想日后常修改程式码,或因为PHP的改版而将整个程式重新设计。
◆ 您希望您的PHP程式可以物件导向化,方便程式的抽換与模组化。
◆ 您希望您的PHP功力更上一层楼,想要学习更多的PHP相关知识,透过PEAR的使用或观看PEAR的原始码,不失为一个好的学习途径。
PEAR就是专门为有以上这些需求的人所写的。
使用PEAR就像建一座房子一樣。它是让您用预制件的方式,建一栋自己设计兼施工的大房子,但卻不需要自己搅拌水泥,自己準备沙土、石头,自己燒磁砖.自己做铝门窗,自己做木工装饰等等...。
PEAR就像是已经针对您的需求所订制好並準备好的预制件,您只需要运用创意将他们组合起来就可以了。
我门在使用PEAR来编写PHP程式时,必需有一个先決条件,就是必需对PHP的相关知识有一定的认识。
若您不知道甚麼是PHP,什麼是Apache、Mysql,或者您虽然知道,卻还不会PHP的基本语法,那麼,本文章目前並不适合您。建议您快去买些PHP、Apach、Mysql的入门书籍,详加研读后,才来看本文章。
大家並不一定要是PHP高手,但一定需要具备看懂基本PHP程序码的能力。无论如何,首先对PHP的热爱才是閱读本书最基本的先決条件。
第二章
PHP有许多的规范与语法,我们不做介绍,请大家有空去閱读有关PHP的书籍,我们重点介绍的是PHP发展到4.0版以后。加入了物件导向(Object-Oriented Programming Language)的功能,虽然还无法像了Java一樣做到完全的物件导向,但比起前版本PHP3.0已经是一大进步,也对PHP的程序开发者提供了更強大与更方便的开发能力。
PHP 5.0版以上的版本,已经转变成为彻底的物件导向化,提供了更多完全物件导向功能。我们所介绍的PEAR程式库对PHP 4.3.0以上的版本是完全的支援。这一点请大家放心。
为了大多数人著想,也考虑到PHP向下的相容性,本书的內容与范例都可以在PHP 4.3.0版以上的环境中执行,因为PEAR完全支援PHP 4.3.0以上的版本,小于PHP 4.3.0版的环境,PEAR大部分也是支援的,只有小部分不支援。
什么是PHP的物件导向? 物件导向的语法在传统的PHP程式中较少看到,但若您了解JAVA这种程式语言的话,您应该可以知道什麼足物件导向,我会在附錄B有针对物件导向做简单的說明。
另外,我要強调的是:PHP除了基本语法外,內建的函式就有超过上千个,橫跨上百种类別,包括文字类函式、数字类函式、资料库类、图形类等等,功能相当強大,令人吒舌。但相对於程式开发者,如何善用这些函式,配合PHP的语法撰写有效又好管理的程式码,将会是一大挑战。
在今天,有PEAR这个由全世界众多顶尖的PHP高手所共同生產的智慧结晶,可以让我们轻松又有效率地撰写程式码,並克服许多撰写上的困难。以武侠界的例子来說,用PEAR撰写PHP就宛如数百位武林高手灌注他们的功力给程式开发者。让程式开发者不用从最基本的练功,紮马步练起,借用他们的功力就可以很轻松的让功力倍增,效率倍增。
說了半天,到底什麼是PEAR?下一个单元笔者就来做个介绍。
PEAR这个字单纯就字面上而言意思是「梨子」。
一颗梨子。官方网站的网址为http://pear.php.net
PEAR官方网站的logo中可以看到例子。
PEAR的开始是从1999年11月2l日。有一位名叫Stig S.Bakken的先生,这位仁兄发起了一个专案,並号召许多的PHP高手来共同投入,他首先为这个专案建立了一些程式码的基础规则,希望PHP的开发者加入这个专案时所撰写的PHP程式码都需要遵守这些规则。
这个专案名称就是PEAR,其实是PHP Extension and Application Repository的缩写,意即「PHP的延续与应用程式库」,简单的說,PEAR其实是一个PHP的程式库。
Bakken先生建立的程式码基础如下,我只概略說明一下,並不详谈细节的部分:
◆ 如果开发者要提供PHP程式库,程式的结构必须物件化。
◆ 程式的缩排要遵循一定的格式
◆ 程式中类別的命名也要遵循一定的格式
◆ 程式码的註解要有一定的格式
◆ 档案命名要有一定的格式
◆ 程式库撰写完成后要包装成套件,而套件的包装与安装方式,也有一定的格式。
该专案欢迎所有的PHP开发者来共同开发PHP程式库,只要他们愿意遵守上述的程式码基础规则。Bakken先生並组织了一组团队作为这个专案的控制主体,负责审核所有参与专案的开发者所提供的程式库,若通过审核,就将程式库分类並放入官方网站中供其他开发者下载使用,另外,这个团体也负责维护官方网站的维护与更新。
有些人可能会很好奇,为什麼有人会愿意免费撰写程式库让别人来使用呀? 这就是开放原码世界的精神一互助、共享。试想,若每个开发者针对自己专精的部分开发程式库给其他人使用,同时也享用別的开发者所释出的程式库,是不是可以达到互助的目的,让每一个开发者共享所有的开发者的成果.不必所有的程式码都要自己撰写。
更棒的是,这些程式库是免费开放给全世界的人使用的,不只参与程式库开发的开发者可以享用(这种作法与Java或perl提供函式库的作法是一樣的)。
因此,全世界所有的PHP开发者可以省去许多撰写程式码的时间,又因为使用程式库的开发者可以回报程式库的缺失给原开发者,原开发者也因此会不断的修正这些程式库,所以程式码相对安全。另外,程式库开发者也会随着时代演进,加入新的功能到程式库中,让程式库的使用者可以与时俱进。
详细情況可参閱PEAR的官方网站中所提到关於开发PEAR的目的說明:http://pear.php.net/manual/en/about-pear.php。我建议您有时间慢慢地看吧,继续将本文章看下去,您就会慢慢了解PEAR的神奇之处了。
我在文章的最后有一章附錄:PEAR官方网站的介绍,大家可以先参考一下。
如果您还不太了解我介绍所谓「程式库」的意思,沒关系,下一节就会透过实际的例子加以說明。
2-3 所有套件简介
▓ 程式库VS套件
介绍所有套件之前,我们必须釐清两个名词,以免读者混淆了,一个就是「程式库」,另外一个就是「套件」。
假如我是是一个PHP的开发者,发展了一个可以处理所有资料库存取「程式库」,並想将这个程式库加入PEAR分享给全世界使用。当我撰写完理资料库的程式库后,我必须按照PEAR的规定,将程式库压缩成一个「件」档,放在PEAR官方网站供所有人下载,也由於遵循PEAR的规定来压缩档案,这个套件就可以用PEAR的套件管理指令来安装或管理,这对PEAR使用者而言是相当便利的,关於套件管理指令,我会在下一章做完整的說明经过上述的說明,相信读者应该了解何谓「程式库」、何谓「套件」?其实,简单的說,把程式库包装好就变成了套件。
▓ 套件与分类
PEAR截至目前为止释出的套件已高达三百多个,共分为35大类,而且不断增加中。大家可以想像全世界的顶尖PHP开发者的结合,是一股多大的团结力量。下图是官方网站中套件的分类:
PEAR因为释出的套件太多了,为了管理上的方便所以依套件的功能将套件做分类,同一类的套件在效果上都有相关性,但提供的功能卻不尽相同小接下来,我将所有的分类用表格的方式做一个简单的介绍,让大家多了解一下PEAR套件可以提供哪些功能。
这麼多的分类,每一类都会依功能的不同发展出不同的套件。以第一个认证类为例,若您到官方网站去看,会发现目前该类中共有8个套件
这8个套件都是与身份认证有相关的套件,如果您想要网页具有身份认证功能,例如,可以让网页浏览者註册、输入帐号密码、判別身份、给予权限等等。就会需要用到这些套件。
我再补充一点:有些套件已发展成熟,开发者会将它称为稳定(stable)版,但若程式库尚在发展中,但也已经可以使用,开发者将它释出,通常会称为测试版(alpha or beta)版。官方网站也会记錄套件的开发者与维护者的姓名,有时候一个套件是由许多人共同开发而成的。
这些套件的讯息都可在PEAR的官方网站中找到,我在附錄〈PEAR官方网站的介绍〉会介绍如何使用PEAR官方网站。
2-4 使用PEAR程式库的简单范例
在这一节中,我用l个简单的范例来說明程式库的使用。
假设您想要制作一个网页,並且希望知道网页执行时所耗用的时间,则可以借用PEAR所释出的名为Benchmark的程式库。这个程式库开发出来的目的就是用来计算网页的执行时间。
首先,先将Benchmark程式库套件安装好(安装方法请参考下一章)。接著我们就可以开始撰写网页了,例如:我们建立了一个名为show.php的网页。
基於說明上的方便,我在每一行程式前面加上行号,大家实际上撰写程式时是不用加上行号的。
第1行与第2行的程式码首先引用Benchmark套件中的Timer.php网页,这个网页內含计算纲页执行时间的程式库。include_once可以将某一个外部的网页放到这个纲页来,我称这个动作叫做「引用」, 本例相当於执行了Timer.php与show.php两个网页。
第3行,用new关键字建立一个Benchmark_Timer物件,並将该物件放入名为$timer的变数中。接著使用细$timer物件的start( )方法啟动时钟,然后加上我自己的程式码,此例中是一行简单的程式。
接著就是要结束时钟的计时,计算网页执行所花费的时间並将它显示出来。第8行先用$timer物件的stop( )方法来停止时钟,並用第9行$timer物件的timeElapsed( )方法计算时钟从啟动到停止中间的时间差,並将计算结果放入$totaltime变数中。
最后用echo函式显示时间差在网页上。
由结果可清楚看到show.php网页从开始执行到执行完毕总共花了0.00013613700866699秒,以后可以借由观察这个数字来判断系统效能,或做为程式码改进的参考。如何,执行时间的计算是不是方便、快速又神奇呢!
如果您需要在其他网页上也可以有计算网页的执行时间的功能,只要用上述方式套用在其他PHP网页上就可以了。
事实上,其他套件的使用方式也跟这个套件的使用方式大同小異.差别只是在每个套件所提供的类別、方法以及使用的参数各有不同而已。
套件虽然好用,但相信读者还是有许多的疑惑? 例如:
1. Benchmark程式库套件是怎麼来的?要有哪些前置工作才可以使用它?
2. 我是如何知道使用Benchmark套件的方法?
第1个问题牵涉到如何安装PEAR套件,以及安装后套件的管理、升级、刪除等问题,我会在第3章加以介绍。第2个问题,笔者会在第4章针对如何使用套件、如何得到套件的资讯等做一个详细的說明。
2-5 为何要用PEAR
为何要使用PEAR? 我根据自己的心得,归纳出以下几点:
1. 省时省力:许多程式码都被撰写在程式库中,开发者只需引用含程式库的PHP档,就可以拥有程式库所提供的功能,省去自行撰写的时间与精力。
2. 安全:由於这些程式库套件都将原始码公开,使用者若发现bug,可以立即向套件的开发者反映,开发者通常也会立即加以修正,让程式库的错误減到最小。
3. 容易维护:自行撰写的程式码与PEAR程式库的程式码分开,若PEAR套件因为有新功能被开发或修正错误而释出新版本,只需更新套件即可,完全不会动到自行撰写的程式码。
4. 功能強大:PEAR套件所提供的功能非常之多,除了一般常用功能如:资料库的连结、设定档的处理、身份的认证、以及表单的处理。另外,较为进阶的功能,例如像网路邮局、网路管理、动态方式產生图形、RSS、Wiki,或者像phpBB的BBCode解析等等都可简单做到。
5. 让网页的程式开发与版面设计分开:PEAR提供许多樣板的程式库,可让程式开发与版面设计分开,方便於程式开发者与网页设计者分工合作。
6. 对学习PHP者是一套絕佳的学习范例:程式库的註解說明十分详细,程式码的撰写,具有一定的规则与格式,而且完全物质化,让开发者容易看懂並学习。有些套件还內附教学文件与范例挡,最重要的是:你不用花半毛钱就可得到,我们应该感谢套件的作者们,他们为我们付出了无私的贡献。
2-6 为什么要建立PEAR社团
是什麼原因促使全世界的PHP开发者大团结,共同开发出PEAR这个程式宝库呢? 我就认为有以下几个原因:
1.遭受其他竞爭者的強大竞爭:这一点第1章已经說明过了。
2.PHP的物质化:从PHP4加入物质导向的功能后,PHP5更是进一步物质化。除了要与ASP.NET、JSP一拼外,就是方便於程式的模组化,让程式库的开发可以进行,有了物质化的功能,程式库才可以与开发者自行撰写的程式码切割。
3.开发者的共同需求:如果每一次开发PHP程式,都要从无到有完全自己来,虽然可以锻鍊程式功力,但卻沒有效率,也不甚经济。若一些常用的功能可以用程式库的方式来处理,将可以解決许多开发者的困难。基於这种所有开发者都共同拥有的需求,让这些PHP的开发者分工合作,共同发展程式库,帮助自己也帮助别人。
2-7 PHP的竞爭者与优缺点
PHP是在1994年发展出来的,经过四次主要的改写,成为我们今天所看到的可以广泛应用且成熟的產品。到2005年四月为止,PHP已经运用於全球超过1900万个网站上,而且这个数字还在持续快速成长中。
PHP与他们的竞爭对手相比,他具有以下优势:
高效能:不是我黄婆卖瓜,哈哈。.., 我閱览过许多Asp.NET与Jsp的网页,效能上实在无法与PHP相比。(Asp.NET与Jsp的使用者应该不会看这篇文章吧)。
● 可以与许多不同的资料库系统相连结:其他的竞爭者也可以,但沒有PHP快。
● 易学易用:PHP的程式码的写法非常直觉,容易学习。
● 支援物件导向:这方面Jsp是強项,但PHP5已经追上来了。
● 低成本:根本不用钱。
● 內建非常多的函式库:记得笔者以前使用Asp,內建的函式库实在少的可怜。
● 开放原始码:安全性会比沒有开放的高。
● PEAR程式库:这是最近的強力武器,用来与強敌们一爭长短。
● 可攜性:无论是各类Unix作业系统,如:Linux,FreeBSD,商业版Unix或Windows作业系统都可以使用PHP。
Asp.NET与Jsp当然也有他们独特的优点? 例如,Jsp夹带JAVA強大的功能,它就可以呈现一些目前PHP无法做到的效果。所以Jsp也吸引了许多的使用者,但笔者对Jsp目前的效能实在还不甚满意,相反地,对PHP的快速度满意的不得了。
使用哪一种程式,就由您自行做明确的抉择,不过,若您选择观看文章,相信我们应该都是同道中人,PHP的爱好者。
总而言之,许多PHP高手共同构筑了一个強大的支援网,若您是PHP的程式开发者,卻对这些高手的好意毫不领情,那不是太可惜了吗?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn