php面向过程和面向对象的区别

php面向过程和面向对象的区别PHP 语言是同时可以应用面向过程和面向对象方式的编程 面向过程与面向对象在许多编程语言中只能使用二者之一来进行编程 但是 PHP 语言与其他编程语言有不同之处 那就是我们可以自由的选择某种编程方式 或者将 PHP 面向过程和 PHP 面向对象二者混用 面向过程编程采用由上至下的程序设计方法 分析出解决问题所需要的步骤 然后用函数把这些步骤一步一步实现 使用的时候一个一个依次调用就可以了 面向对象是把整

PHP语言是同时可以应用面向过程和面向对象方式的编程,面向过程与面向对象在许多编程语言中只能使用二者之一来进行编程,但是PHP语言与其他编程语言有不同之处,那就是我们可以自由的选择某种编程方式,或者将PHP面向过程和PHP面向对象二者混用。

面向过程编程采用由上至下的程序设计方法,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,建立对象的目的不是为了完成某一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。通过不同对象的属性和行为的使用,解决问题。

下面为大家简单解析两种方式的特点和编程思想的区别。

面向过程程序设计:procedure oriented programming 简称POP,是一种以过程为中心的编程思想,就是分析出解决问题所需要的步骤,然后用变量和函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

 

php面向过程和面向对象的区别

举个php连接数据库的小例子:

<?php //面向过程的连接方法 $conn = mysqli_connect('localhost', 'root', '', '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= ""; 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); ?>

 

看到一个简单的例子,描述的非常好,这里套用一下:

用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。所谓盖浇饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。

蛋炒饭制作的时候,有一道工序肯定是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。

蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了。盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。

看了这篇文章,简单的总结一下!

面向过程

面向对象

这就是两种编程思想之间的区别。

面向过程性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;所以诸如单片机、嵌入式开发等,一般采用面向过程开发,性能是最重要的因素,而且过程相对简单。而针对于互联网中很多庞大的业务系统,使用面向对象的方式开发就是必然的,因为面向对象的程序易维护、易复用、易扩展,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232750.html原文链接:https://javaforall.net

(0)
上一篇 2025年9月17日 上午11:01
下一篇 2025年9月17日 上午11:22


相关推荐

  • 运维项目经历案例

    运维项目经历案例一 期中项目经验示例 1 1 新服务器上线搭建系统环境 1 根据现有结构部署工具 PXE kickstart 2 结合应用系统需求定制部署模版 3 制作系统优化等一键执行脚本 4 自动化部署实施 5 根据定制的优化内容对自动化部署效果进行检验 1 2 新服务器上线搭建软件环境 1 在新批量部署的服务器上部署 LNMP 环境 2 对批量化部署的环境进行效果检验 3 编制 Nginx 配置文件并批量化部署 4 根据需求做 Nginx 服务相关的优化 expires gizp 等 1 3web 服务器架构调整 从

    2026年3月18日
    2
  • 变异系数法之python

    变异系数法之python1.简介2.算法原理2.1指标正向化2.2数据标准化2.3计算变异系数2.4计算权重以及得分3.实例分析3.1读取数据3.2指标正向化3.3查看行数和列数3.4数据标准化3.5计算变异系数3.6计算权重3.7计算得分完整代码

    2022年6月12日
    57
  • rpm命令参数详解

    rpm命令参数详解1 rpm 常用命令安装一个包 rpm ivh 升级一个包 rpm Uvh 移走一个包 rpm e 安装参数 force 即使覆盖属于其它包的文件也强迫安装 nodeps 如果该 RPM 包的安装依赖其它包 即使其它包没装 也强迫安装 查询一个包是否被安装 rpm qrpmpackagen 得到被安装的

    2026年3月16日
    2
  • fastuniq与seqkit去重对比[代码]

    fastuniq与seqkit去重对比[代码]

    2026年3月14日
    1
  • QT多线程编程详解

    QT多线程编程详解一 线程基础 1 GUI 线程与工作线程每个程序启动后拥有的第一个线程称为主线程 即 GUI 线程 QT 中所有的组件类和几个相关的类只能工作在 GUI 线程 不能工作在次线程 次线程即工作线程 主要负责处理 GUI 线程卸下的工作 2 数据的同步访问每个线程都有自己的栈 因此每个线程都要自己的调用历史和本地变量 线程共享相同的地址空间 二 QT 多线程简介 QT 通过三种形式提供了对线程

    2026年3月20日
    2
  • 浅谈Python Django框架

    浅谈Python Django框架

    2021年10月21日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号