很多站长朋友们都不太清楚php面向过程好,今天小编就来给大家整理php面向过程好,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 php是什么意思 2、 Java和PHP在Web开发方面的比较 3、 PHP是面向对象好呢?还是面向过程好呢? 4、 请教大家现在用php是面向对象呢还是面向过程 5、 php面向对象和面向过程的区别 6、 在php程序员里用面向对象写sql语句好还面向过程好?那个效率更快、速度更高? php是什么意思php的意思是:php,又称超文本预处理器,是一种通用开源脚本语言。其是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。
php介绍:PHP即“超文本预处理器,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。利于学习,使用广泛,主要适用于Web开发领域。其语法利用借鉴了 C,Java 和 Perl,非常容易学习。该语言的主要目标是让 Web 开发人员可以很快写出动态生成的网页,如用于开发留言板、购物网站、论坛等,但 PHP 的功能远不止如此。PHP是如此的易用且功能强大,因此深受广大 Web 开发人员的喜爱。对比其他 Web 开发语言,PHP 的市场份额也越来越大。据统计,世界上有超过 60% 的网站后台语言采用 PHP。
PHP特点:
(一)开源性和免费性
由于PHP的解释器的源代码是公开的,所以安全系数较高的网站可以自己更改PHP的解释程序。另外,PHP运行环境的使用也是免费的。
(二)快捷性
PHP是一种非常容易学习和使用的一门语言,它的语法特点类似于C语言,但又没有C语言复杂的地址操作,而且又加入了面向对象的概念,再加上它具有简洁的语法规则,使得它操作编辑非常简单,实用性很强。
(三)数据库连接的广泛性
PHP可以与很多主流的数据库建立起连接,如MySQL、ODBC、Oracle等,PHP是利用编译的不同函数与这些数据库建立起连接的,PHPLIB就是常用的为一般事务提供的基库。
(四)面向过程和面向对象并用
在PHP语言的使用中,可以分别使用面向过程和面向对象,而且可以将PHP面向过程和面向对象两者一起混用,这是其它很多编程语言做不到的。
Java和PHP在Web开发方面的比较比较PHP和JSP这两个Web开发技术 在目前的情况是其实是比较PHP和Java的Web开发 以下是我就几个主要方面进行的比较
一 语言比较
PHP是解释执行的服务器脚本语言 首先php有简单容易上手的特点 语法和c语言比较象 所以学过c语言的程序员可以很快的熟悉php的开发 而java需要先学好java的语法和熟悉一些核心的类库 懂得面向对象的程序设计方法 所以java不如php好学
Java首先要编译成字节码 class文件 然后在java虚拟机上解释执行 Java的Web开发首先最容易想到的就是JSP(现在已经到JSP ) 原来的java的Web开发都是用servlet来实现的 用servlet来开发需要程序员在java的源文件中嵌入大量的代码 所以后来就出现了JSP JSP可以方便的嵌入到文件当中 其实jsp文件在服务器上执行的时候首先会被应用服务器转换成servlet 然后再编译执行 Jsp可以通过servlet和JavaBean的支持产生强大的功能 JavaBean 是一种可复用的 跨平台的软件组件 使用javabean可以方便的实现java代码和的分离 能够增强系统的功能和软件的复用性
Java的Web开发属于SUN公司定义的J EE其中的规范 而且在J EE中包括了java的Web开发的所有方面 如 JSP Servlet JDBC JNDI JAVABEAN EJB等等 J EE就特别适合于做大型的企业级的应用
二 数据库访问比较
Java通过JDBC来访问数据库 通过不同的数据库厂商提供的数据库驱动方便地访问数据库 访问数据库的接口比较统一
PHP对于不同的数据库采用不同的数据库访问接口 所以数据库访问代码的通用性不强 例如 用Java开发的Web应用从MySQL数据库转到Oracle数据库只需要做很少的修改 而PHP则需要做大量的修改工作
三 系统设计架构比较
采用Java的Web开发技术 需要使用的是面向对象的系统设计方法 而PHP还是采用面向过程的开发方法 所以用Java进行开发前期需要做大量的系统分析和设计的工作
四 跨平台性
Java和PHP都有很好的跨平台的特性 几乎都可以在不作任何修改的情况下运行在Linux或者Windows等不同的操作系统上
五 开发成本比较
PHP最经典的组合就是 PHP + MySQL + Apache 非常适合开发中小型的Web应用 开发的速度比较快 而且所有的软件都是开源免费的 可以减少投入
Java的Web应用服务器有免费Tomcat JBoss等 如果需要更好的商业化的服务有 Web Sphere和 Web logic
六 分布式多层架构比较
PHP只能实现简单的分布式两层或三层的架构 而JAVA在这方面就比较强大 可以实现多层的网络架构 数据库层(持久化层) 应用(业务)逻辑层 表示逻辑层彼此分开 而且现在不同的层都已经有一些成熟的开发框架的支持 例如Struts就是利用java的Web开发技术实现了MVC的设计模式 而在业务逻辑层也有Spring框架 数据库持久化层有Hibernate等框架 这些框架可以方便开发者高效 合理 科学得架构多层的商业应用
下面简要的说一下Struts 它实质上是在JSP Model 的基础上实现的一个MVC(Model View Controler)框架 JSP Model 体系结构是一种联合使用JSP 与Servlet 来提供动态内容的方法 在Struts框架中 模型由实现业务逻辑的JavaBean或EJB组件构成 控制器由Servlet实现的 视图由一组JSP文件组成 采用Struts可以明确角色的定义和开发者与网页设计者的分工 而且项目越复杂 其优势越明显
七 源代码安全
PHP开发的程序的源代码都是公开的 他人拿到php开发的程序后都可以进行修改
Java开发的程序 最后用户拿到的是只是一些编译好的class类 无法看到完整的源代码 安全性高
八 性能比较
有人做过试验 对这两种种语言分别做回圈性能测试及存取Oracle数据库测试
在循环性能测试中 JSP只用了令人吃惊的四秒钟就结束了 * 的回圈 而PHP测试的是 * 循环(少一个数量级) 却分别用了 秒
数据库测试中 二者分别对 Oracle 进行 次 Insert Update Select和Delete JSP 需要 秒 PHP 需要 秒
项目
PHP
JAVA
可复用性
低
高
开发速度
快
慢
易维护性
差
优
可移植性
优- Linux
Windows Unix
安全性
低
高
开发费用
低
高
多层架构
差
优
数据库访问
接口不统一
接口统一
可扩展性
差
优
面向对象
差
优
lishixinzhi/Article/program/PHP/201311/21447
PHP是面向对象好呢?还是面向过程好呢?总的来说,你要明白结构化编程与面向对象编程的区别,最重要是一点是结构化编程的数据与行为是分离的,而面向对象的两者是紧密相连的,另外,按造规模大小来定论,团体开发,基础台阶高,相应的后期维护也相当高,所以基本者是面向对象,不过如果是你个人来作一些开发,其实根本没有那么条条框框的,写一个一般人能看的懂的整体结构,代码条理清晰,就比什么都好了.
请教大家现在用php是面向对象呢还是面向过程最早是面向过程,现在当然是面向对象了。。面向过程的语言都是很古老的语言了,像C之类的语言。而且即使是C之类的语言都有人改成面向对象的。像C有人改成了Object-C。面向对象是大势所趋。。。抱歉,回答完才发觉看错问题意思了,用PHP是面向对象还是面向过程,完全取决于你自己,所谓面向过程即是函数,面向对象即是类的对象,你新建一个函数,然后调用函数就是面向过程。你建一个类,实例化后调用类的对象,就是面向对象。你自己爱怎么用就怎么用。。。
php面向对象和面向过程的区别面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用分别的函数来实现,问题就解决了。
而面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为 1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。
功能上的统一保证了面向对象设计的可扩展性。比如我要加入悔棋的功能,如果要改动面向过程的设计,那么从输入到判断到显示这一连串的步骤都要改动,甚至步骤之间的循序都要进行大规模调整。如果是面向对象的话,只用改动棋盘对象就行了,棋盘系统保存了黑白双方的棋谱,简单回溯就可以了,而显示和规则判断则不用顾及,同时整个对对象功能的调用顺序都没有变化,改动只是局部的。
再比如我要把这个五子棋游戏改为围棋游戏,如果你是面向过程设计,那么五子棋的规则就分布在了你的程序的每一个角落,要改动还不如重写。但是如果你当初就是面向对象的设计,那么你只用改动规则对象就可以了,五子棋和围棋的区别不就是规则吗?(当然棋盘大小好像也不一样,但是你会觉得这是一个难题吗?直接在棋盘对象中进行一番小改动就可以了。)而下棋的大致步骤从面向对象的角度来看没有任何变化。
当然,要达到改动只是局部的需要设计的人有足够的经验,使用对象不能保证你的程序就是面向对象,初学者或者很蹩脚的程序员很可能以面向对象之虚而行面向过程之实,这样设计出来的所谓面向对象的程序很难有良好的可移植性和可扩展性。
在php程序员里用面向对象写sql语句好还面向过程好?那个效率更快、速度更高?面向对象与面向过程在许多编程语言中只能使用二者之一来进行编程,但是PHP语言与其他编程语言有不同之处,那就是我们可以自由的选择或者将如果你是刚接触PHP,用PHP面向过程的风格来书写代码很可能是你唯一的选
面向对象与面向过程在许多编程语言中只能使用二者之一来进行编程,但是PHP语言与其他编程语言有不同之处,那就是我们可以自由的选择或者将 如果你是刚接触PHP,用PHP面向过程的风格来书写代码很可能是你唯一的选择。但是如果你经常上PHP论坛和新闻组的话,你应该会看到有关“对象”的文章。你也可能看到过如何书写面向对象的PHP代码的教程。或者你也可能下载过一些现成的类库,并尝试着去实例化其中的对象和使用类方法--尽管你可能没有真正理解这些类为什么可以工作,或者为什么需要使用PHP面向对象的方法来实现功能。
应该使用“面向对象”的风格还是“面向过程”的风格?双方各有支持者。像“对象是低效的”或“对象非常棒”这样的议论也时有耳闻。本文不尝试轻易判定两种方法的哪种具有绝对的优势,而是要找出每种方法的优缺点。
以下是PHP面向过程风格的代码示例:
<?php
print"Hello,world.";
?>
以下是PHP面向对象风格的代码示例:
<?php
classhelloWorld{
functionmyPrint(){
print"Hello,world.";
}
}
$myHelloWorld=newhelloWorld();
$myHelloWorld->myPrint();
?>
如果你想了解一些“面向对象”的基本知识,请使用Google搜索,网络上有非常多精彩的文章。
谁像这样写代码?
为了理解为什么这个论题成为论坛上口水战的导火线,我们看一些每个阵营的比较极端的例子。我们看看“过程狂热”和“对象狂热”。看看他们的观点听起来是不是有点熟悉。
过程狂热
过程狂热曾在上课时被计算机教师批评,因为这种方法没有使用更加抽象的实现方式。而支持PHP面向过程者的观点“它可以工作!”并不能提高其编程水平和档次。毕业后他们可能找到一个工作,写驱动程序,文件系统或其它的偏向底层的编程,他们的注意力集中于速度和代码的精炼。
“过程狂热”极端的例子是抵制对象,抵制抽象化。他们总在想着如何让程序运行起来更快,而不在乎别人是否能读懂他们的代码。他们常常把编程当成竞赛而不是团队活动。除了PHP外,他们最喜爱的编程语言是C和汇编。在PHP世界中他们可能会开发PECL模块,贡献出高效率的代码。
对象狂热
对象狂热者热衷于在任何时候使用PHP面向对象的风格来书写代码。他们没有真正考虑过用这种方式是否会影响程序的执行效率。有时候让人觉得他们更享受抽象的设计概念而不是现实的代码。他们通常很可能是项目管理者或文档书写者。
对象狂热者指出,如果没有抽象的设计方法我们仍然在使用0和1进行编程。他们喜欢用伪码来描述问题。极端的例子是对象狂热者即使知道有时候会牺牲效率仍然使用对象。除了PHP,他们最喜欢的语言是Java和Smalltalk。在PHP世界中,他们可能会开发PEAR模块,贡献文档化非常好,易于维护的代码。
不要偏激和讽刺
你知道为什么论坛上总是充斥着各种偏见吗?你的经验阅历,你对新事物的态度都可能是原因。作为程序员,我们需要时常注意这些偏见并以开放的心态去学习新事物。
你的编码倾向?
考虑一下当你书写PHP代码时有什么偏好或倾向。通常这些偏好是比较隐晦的。有时候你可能在每个项目中有着同样的偏好。我个人倾向于“优雅”,但我不想在此定义如何才是“优雅”的代码,那应当出现在另一篇文章里。但是,理论化的偏好不一定适合于实际项目—相反地,他们常常是一种偏见。
理论化的倾向
•用最少行数的代码提供一个完整的解决方案
•在问题层次上考虑问题
这听起来似乎很不错。但“代码行数最少”如何来衡量呢?要把代码注释算在内吗?我们是否要把每一行都串起来而只用分号来区分呢?大括号呢?很明显这种想法是错误的。
再解释一下什么是“问题层次”。这是否意味着在我们的方案中的每个概念都需要建立一个类?或者需要在每个独立的文件里保持问题的每个部分,并建立一个复杂的文件树来与现实中的问题相对应?就是这样的想法--为每个想法准备一个文件或类!
很明显这些概括极端化后变得可笑。但现实中存在更微妙的证明。是否常常会有程序员在团队合作时插入一行复杂的,强大的但没有注释的代码?这对于接手维护这些代码的人来说无疑是非常令人沮丧的事。相反地,是否你的官僚的自以为是的上一级程序员常常“横冲直撞”般地,建立接口和类?而那些接口和类不仅仅限制了负责实现的程序员,也限制了效率和灵活性,导致客户要求扩展程序时手足无措。这些都是以上各种倾向的微妙的证明。
实际倾向
一个项目开始的时候,首先要寻求实际的编码目的和方向。这个项目的实现目标是什么?下面是可能是答案。
•开发快,发布快
•尽可能快地运行
•易于维护,改进和扩展
•发布一个API
第一、二个方向倾向于使用过程化的风格,而最后两个倾向于使用PHP面向对象的风格。
什么时候某种方式更有效?
现在让我们试着评价每种方式在现实中的优势。
PHP面向过程案例
有关PHP的面向过程化编程优势的一个基础性的论据是:PHP是一个解释性的语言--这意味着,不像其它的语言一样,它不会被编译成一个可执行的包,而是被解释并马上执行。它是一种脚本语言并存储于文本文件中(例外的,如果使用了Zend编译工具)。
另一个反对在PHP4及更低版本中使用面向对象方式进行编码的理由是:在PHP的早期版本中对象的功能并没有经过良好设计。就像Rasmus曾说过的:“那是事后才想起要增加的功能”。这意味着在PHP4及更早的版本中,对象的效率是个问题。但PHP5出来后,这种情形会有改观。
以下两个最流行的PHP程序--OsCommerce和PhpMyAdmin.主要使用面向过程的编码方式。它们构建起来很快,运行起来也很快。两者都很自然地采用嵌入HTML的方法。
OsCommerce
OsCommerce实际上使用了很多对象,但绝大部分功能是通过“过程”来实现的。我曾经hack过OsCommerce,为其增添一些对于客户非常实用的自定义功能。这个过程是挺麻烦的,因为OsCommerce中的很多过程代码,没有使用模板化的系统,并且设计成多语言版,所以需要花一定的时间才能上手。但是它可以工作,事实上它已经很好地运行在数目众多的电子商务站点上了。OsCommerce同时提供了一个论坛和一个开发框架用来开发模块和插件。因此,现在已经有了很多其它开发者提供的实用的功能模块。
PhpMyAdmin
PhpMyAdmin直接使用的类只有一个:MimerSQLValidator类,依赖于PEAR包中的Mail_Mime,Net_DIME和SOAP。这可能是考虑到开发的方便:利用现成的可以实现目的的代码。除此之外,一切都是面向过程的,HTML和PHP代码也是混杂在一起。
PhpMyAdmin是我几乎每天都要用到的一个工具,用来对少量的数据表进行不太复杂的处理。有时我甚至鼓励我的客户将它当作后端的管理工具来使用(当然我会限制他们的权限)。PhpMyAdmin的表现非常棒,也很快。有时我想在一些项目中扩展PhpMyAdmin作为后端的管理工具,利用它的一些新功能如数据查询语句书签可以很方便地展示给我的客户和编辑。随着每个新版本的推出,PhpMyAdmin越来越实用,功能越来越强大。 软件开发网
PHP面向过程小结
以上两个使用面向过程风格的程序都有非常好的文档和代码注释。OsCommerce提供的开发框架可以增加维护性和扩展性。但是两者都没有提供API,不能扩展程序到另外的体系中。
如果你想把OsCommerce整合到一个帐单程序中,需要花费大量的时间和精力,就像扩展PhpMyAdmin成一个供客户使用的后端管理工具。不过从它们设计的目的来看,确实在各自的领域中都表现地很出色。
PHP面向对象案例
支持面向对象风格者的观点都集中于扩展性和封装。仅仅用面向对象的方式来写代码不会为你的代码产生文档,但它可以鼓励你为之添加文档。并且,为了易于扩展,你可能会写一个API。PHP5许诺让面向对象编程更加愉快。我开玩笑地将它称为PHP中的”Java2”版本,因为它整合了Java中的许多特性,像接口,面向对象模型,try-catch语句等。但即使在对面向对象支持不
力的PHP4中,仍然出现了许多出色的面向对象应用程序。
Smarty
Smarty用来构建带有复杂表单并基于模板的站点。最近,我写了一个可以完全换“皮肤”的在线考试系统—可以不用改变任何底层的代码和功能就可以将整个站点的外观界面和风格完全改变。为了让设计师可以易于设计新的界面,我设计了一个自定义的标签库作为Smarty标签库的扩展。可以像这样简单地插入:
[navigationhorizontalseparatedby"|"]
在一个页面的顶端有分隔开的导航。因为Smarty已经提供了非常强大的机制来表现变量中包含的数据,这是一个映射较复杂的Smarty标签到skin标签的简单过程。
由于Smarty封装成一个类,并且它的方法都有很详尽的文档,使得使用模板的过程变得令人难以置信地易于扩展。同时,通过强制性地只能显式地传递你要使用的变量给Smarty模板的方法,Smarty也为PHP的环境变量提供了一个保护层。这种方法有助于在Smarty模板设计师和程序员间建立安全、可靠的工作关系。
FPDF
FPDF是一个非常优秀的工具。如果你被改来改去的pdflib的API所困惑,或者不愿为商业化的解决方案而交钱;或者由于共享主机的限制,无法使用扩展模块—请考虑使用这个免费的,纯PHP构建的PDF生成工具。
这个类有很好的文档,包括许多很好的例子来阐述如何在PDF中布局文本和图片。在上面提到的同一个在线学习站点我使用FPDF来动态生成PDF文件,使用truetype字体和300dpi精度的图像。在PHP中实例化FPDF类并进行PDF操作并不会花费太多额外的时间,因为PDF本身就可能需要花费几分钟来下载。事实上,动态生成并传送一个PDF所花的时间不比当使用一个慢速的网络连接来传送静态PDF文件所花的时间多。这都是相对而言的。并且,由于FPDF是基于类的,他可以被扩展。事实上,有些类方法虽然存在但还没有完全实现,仅作为一个框架,这可以为你在子类中建立你自己的内容(如自定义的头尾元素)提供向导。
PHP面向对象小结
Smarty和FPDF都提供了带有良好文档的API来扩展主类。这说明了在类的内部组织方法和数据的必要性--有时同样的功能可以用函数和全局变量来完成,但这样不易于扩展。并且,使用对象对跟踪和保持PDF或HTML文档的风格非常有帮助,你可以将同样的数据用不同的格式来发布。Smarty和FPDF都是使用对象来建立灵活实用的类库的极好的例子。
为什么两种方式都是必需的?
回到我们充满热情的程序员身上,我们开始赞美他们:
•我们欣赏Smarty和FPDF的实用性和扩展性
•我们欣赏osCommerce和phpMyAdmin的运行速度和良好表现
这种欣赏还包括对PHP的一些基础开发。PECL和PEAR都收到了很多赞扬和批评。我想这两个项目为阐明PHP面向过程和面向对象编程的区别提供了很好的例子。
PECl提供了PHP的扩展库,用C和面向过程的方式开发,注重速度和简洁精炼。通常,这些都是从已经存在的LGPL软件中移植而来,其中许多有趣的特性已经加入PHP。毕竟,PHP是用C写的。
PEAR则贡献了很多有趣的类如建立Excel表或改变DNS记录等。使用PEAR类库可以为你节约大量时间,甚至可以让你在不怎么熟悉PHP的情况进行开发—“我不理解但它能用!”。
总结
希望本文能加深你对PHP面向对象和PHP面向过程的两种编程方式的理解,并且更重要地—鼓励你在更具体的细节上进行探索。我希望你会有自己的想法,并在实际开发中检验你的项目开发倾向,总结出更多实际的案例,并不啬写些针对本文的评论。
总之,每种方式都有其优势的一面,纠缠于争论不如离开去写些实际的代码!
关于php面向过程好的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php面向过程好 php面向对象优点,缺点的详细内容...