php面向过程和面向对象的区别
PHP语言是同时可以应用面向过程和面向对象方式的编程,面向过程与面向对象在许多编程语言中只能使用二者之一来进行编程,但是PHP语言与其他编程语言有不同之处,那就是我们可以自由的选择某种编程方式,或者将PHP面向过程和PHP面向对象二者混用。
面向过程编程采用由上至下的程序设计方法,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,建立对象的目的不是为了完成某一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。通过不同对象的属性和行为的使用,解决问题。
下面为大家简单解析两种方式的特点和编程思想的区别。
面向过程程序设计:procedure oriented programming 简称POP,是一种以过程为中心的编程思想,就是分析出解决问题所需要的步骤,然后用变量和函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
举个php连接数据库的小例子:
<?php
//面向过程的连接方法
$conn = mysqli_connect('localhost', 'root', '123456', 'myDB')$sql = "SELECT id, name, time_created FROM user";$result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) {// 输出数据while($row = mysqli_fetch_assoc($result)) {echo "id: " . $row["id"]. " - Name: " . $row["name"]. " " . $row["time_created"] . "<br>";}
} else {echo "0 结果";
}mysqli_close($conn);
?>
面向对象程序设计:object oriented programming 简称OOP,是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。它可能包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性,对象里的程序可以访问及经常修改对象相关连的数据。
<?php
//面向对象和面向过程的联合使用连接方法
//类
class IamConnClass{//类的属性public $servername = "localhost";public $username = "root";public $password= "123456";public $dbname= "myDB";//类的方法,抑或称之为行为public function mysqli_connect(){//类的内部属性调用return mysqli_connect($this->servername, $this->username, $this->password, $this->dbname);}public function connect_error(){return mysqli_connect_error();}public function query($sql){//类内部的方法调用return mysqli_query($this->mysqli_connect(), $sql);}
}// 实例化类为对象
$conn = new IamConnClass();
// 使用这个对象的方法,创建连接
$conn_result = $conn -> mysqli_connect();
// Check connection
if ($conn->connect_error()) {die("连接失败: " . $conn->connect_error());
} $sql = "SELECT id, name, time_created FROM user";
$result = $conn->query($sql);//此处又转换为面向过程(即php的面向对象不是固定的使用方法,而是可以和面向过程互配,灵活使用)
if (mysqli_num_rows($result) > 0) {// 输出数据while($row = mysqli_fetch_assoc($result)) {echo "id: " . $row["id"]. " - Name: " . $row["name"]. " " . $row["time_created"] . "<br>";}
} else {echo "0 结果";
}//关闭连接
mysqli_close(conn_result);
?>
看到一个简单的例子,描述的非常好,这里套用一下:
用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。
蛋炒饭制作的时候,有一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。
蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。
所以到底是蛋炒饭好还是盖浇饭好呢?其实这类问题都很难回答,非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。盖浇饭的好处就是”菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是”可维护性“比较好,”饭” 和”菜”的耦合度比较低。蛋炒饭将”蛋”“饭”搅和在一起,想换”蛋”“饭”中任何一种都很困难,耦合度很高,以至于”可维护性”比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。
例子链接:https://blog.csdn.net/jerry11112/article/details/79027834
看了这篇文章,简单的总结一下!
面向过程
优点:性能比面向对象高
缺点:耦合度高,没有面向对象易维护、易复用、易扩展
面向对象
优点:低耦合、易维护、易复用、易扩展
缺点:性能比面向过程低
这就是两种编程思想之间的区别。
面向过程性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;所以诸如单片机、嵌入式开发等,一般采用面向过程开发,性能是最重要的因素,而且过程相对简单。而针对于互联网中很多庞大的业务系统,使用面向对象的方式开发就是必然的,因为面向对象的程序易维护、易复用、易扩展,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。
php面向过程和面向对象的区别相关推荐
- JAVA入门级教学之(面向过程和面向对象的区别)
目录 JAVA入门级教学之(面向过程和面向对象的区别) 面向过程和面向对象的区别: -面向过程: -面向对象: -发展历程: -生命周期中包括: -什么是类: -什么是对象: -软件开发的过程: -重 ...
- 简单抽象的去理解 面向过程和面向对象 的区别
面向过程和面向对象的区别 兴趣所致录 面向过程 场景:你是一条不折不扣的单身狗,然后还想吃苹果[手动滑稽狗头] 首先吃苹果得有苹果,所以得去买苹果,然后洗苹果, 如果焦作一下不想吃皮,你得先削皮, 要 ...
- 面向过程和面向对象的区别及优缺点
面向过程和面向对象的区别及优缺点 面向过程: 面向过程是一种自顶向下的编程. 面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发. Linux/U ...
- 你真的知道面向过程和面向对象的区别吗?
在面试时经常会被问到面向过程和面向对象有什么区别,虽然都是编程的一种思想,但是他们的侧重点不同,我们从以下几个方面进行简单总结. 1. 面向过程 面向过程是一种以事件为中心的编程思想,编程的时候把解决 ...
- 什么是面向对象、面向过程与面向对象的区别
要讲区别,首先我们得先来弄弄清楚什么是面向过程,什么是面向对象. 面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 比如把大象放进冰箱,第一 ...
- 面向过程与面向对象的区别
一.区别简述 面向过程(Procedure Oriented):以过程为核心,强调事件的流程.顺序,如:C语言. 面向对象(Object Oriented):以对象为核心,强调事件的角色.主体,如:C ...
- Python 面向对象编程(一) —— 面向过程和面向对象的区别
[无限嚣张(菜菜)]:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题的总结. 座右铭:尽人事,听 ...
- 面向过程和面向对象的区别(转)
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙 ...
- 面向过程和面向对象的区别
面向过程 设计思想: 自顶向下的设计模式 分析解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 是以算法为核心的 将大问题转化为若干小问题来求解 表现形式:用函数来作为划分程序的基本单位 直接面 ...
最新文章
- 如何实现一个定时的任务,并且可以自己停止
- 解决Jira和Confluence访问打开越来越缓慢问题
- 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组
- 万众期待的PowerBI Report Server与PowerBI Premium
- word手写字体以假乱真_常用的100个Word快捷键
- 采集的时候,列表的编码是gb2312,内容页的编码却是UTF-8,这种网站怎么采集?
- 一本通————1244 和为给定数
- 微信小程序ios倒计时时间不显示,安卓能正常显示,小程序倒计时兼容问题
- Unity打包安卓出现报错 Exception: Unknown CPU architecture for libraryxxx.a
- 从ChargePoint到能链智电,充电服务商的价值创新
- mvp的全称_打游戏抢了这么久的MVP,你竟不知道MVP的全称和由来?
- matlab应用最简差分格式,泊松方程有限差分格式的构造以及MATLAB实现.docx
- 电脑报错 :file:\boot\bcd 0xc000014c
- 人工客服真的是真人吗?
- ALLEGRO模块无法移动解决方案
- 数据分析:在天猫开一个店需要多少成本?
- centos下安装snmp服务
- 使用京东云免费云主机搭建CentOS
- 畅游电驴/电骡(emule) 1.0 发布-下载网络资源的利器
- 微信订阅号关联服务号,通过获取共同unionid,来获取用户信息(关联账号)
热门文章
- 修改firefox用户配置文件
- springboot+mysql危险品监管系统-计算机毕业设计源码95185
- 中专计算机课程教学备课,关于职业中专计算机教学的思考
- 配置JupyterLab远程密码访问
- LCD12864.h
- 题解报告——窗口的星星
- javascript事件列表详解
- LongLightUtils【保持屏幕常亮工具类】
- ssh: connect to host 192.168.56.101 port 22: Connection refused
- matlab 如何得到矩阵的 角向和 径向分布,波函数的角度分布图和概率径向分布图.ppt...