重蔚自留地php学习第四十二天——对象(面向对象)

面向对象编程

面向对象编程不是技术,是一种思想而已。

面向对象编程:OOP(object oriented programming)

面向过程和面向对象

面向过程:将一个事务分成具体的某系列功能,然后将一连串的功能连起来使用,从而解决某个问题

重蔚自留地php学习第四十二天——对象(面向对象)

之前所写代码全部都是面向过程。

面向对象:将一个事务分成具体的某系列功能,会定义一个操作该事务的一个主体。所有的操作都是由该主体来发生。

重蔚自留地php学习第四十二天——对象(面向对象)

计算机无法识别自然界的任何实体,通过面向对象的这种思想,将一些列的代码制作成似自然界的实体的概念,让电脑能够识别。

面向对象几个基本概念

类:将某一些具有相同的功能和属性的东西,进行集合设计(抽象),包含了一类事务的属性和一些能力,同时对这些属性和能力进行包装,形成一个包装名,包装的整个内容就是一个类,包装名就是类名

对象:类的一个实例,就是一个抽象的具体化,得到个体

实例化:从类产生出一个对象的过程

重蔚自留地php学习第四十二天——对象(面向对象)

类是一个模板,对象是模板创造出来的一个具体的模型

抽象:跟实例化刚好相反,把相同的一些实体的共同的特点(属性和能力),总结出来,形成类的过程。

 

面向对象在系统的实现

语法:class 类名{ //类成员}

 

对象(实例化)

语法

$object = new 类名[()]

new是实例化,new 类名之后(实例化)得到一个对象,用一个变量来保存对象

重蔚自留地php学习第四十二天——对象(面向对象)

对象查看

重蔚自留地php学习第四十二天——对象(面向对象)

类里的一些内容:类成员

类成员:属性,方法,类常量

属性:放在类里的变量

方法:放在类的函数

类常量:放在类的常量

 

定义类属性:需要对属性使用访问修饰限定符

php5以前:使用关键字var

重蔚自留地php学习第四十二天——对象(面向对象)

php5以后:三个关键字:public,protected,private

public:公共的,不管是在类里面还是在类外面都能被访问到

protected:受保护的,继承的时候使用,如果没有继承,与private一样

private:私有的,只能在类的内部进行访问

重蔚自留地php学习第四十二天——对象(面向对象)

带属性的类的对象

重蔚自留地php学习第四十二天——对象(面向对象)

属性的访问:只能通过对象进行访问

语法:对象->属性名字

重蔚自留地php学习第四十二天——对象(面向对象)

属性的操作:修改和查看

重蔚自留地php学习第四十二天——对象(面向对象)

访问修饰限定符的作用

重蔚自留地php学习第四十二天——对象(面向对象)

类内容只能有属性,方法和常量,不能有其他的

重蔚自留地php学习第四十二天——对象(面向对象)

通过类中的方法来访问私有属性

类中的方法就是函数

语法:function 函数名(){ // 函数体;返回值}

重蔚自留地php学习第四十二天——对象(面向对象)

方法访问属性:错误

重蔚自留地php学习第四十二天——对象(面向对象)

 

方法访问属性

重蔚自留地php学习第四十二天——对象(面向对象)

但是以上方式治标不治本,每个对象所属的变量名都不一样,所以这里都会只对一个对象进行所有操作。

 

有一种方式,能够实现每个对象去调用方法的时候,都代表该对象。

关键字:$this,代表当前对象(调用该方法的对象)

$this的使用

重蔚自留地php学习第四十二天——对象(面向对象)

 

动手练习

  1. 新建一个类Person
  2. 类有属性,公共的name,私有的salary
  3. 定义方法,设置和获取私有的salary
  4. 实例化对象,然后记性访问

 

规则

类的命名规则:类使用纯英文命名,类名的首字母大写,多字母的话一般使用驼峰法

属性定义规则

  1. 必须要使用访问限定修饰符
  2. 在定义的时候可以对属性进行赋值,初始化,只能直接赋值,不能使用表达式或者变量赋值

重蔚自留地php学习第四十二天——对象(面向对象)

方法定义规则

  1. 方法定义与函数的定义规则一样
  2. 方法其实也有访问限定修饰符

重蔚自留地php学习第四十二天——对象(面向对象)

类文件规则

  1. 一个类单独存在于一个文件(文件除了类之外没有其他东西)
  2. 类文件名的命名,类名.class.php(虽然类名不区分大小写,但是要求大家在写类名以及给类文件命名的时候,都严格区分大小写)。

类与对象的内存关系

重蔚自留地php学习第四十二天——对象(面向对象)

思考:为什么对象里只保存属性而不保存方法?

  1. 属性是每一个实例都有自己的独立属性
  2. 每个对象都共享同样的方法,只需要在方法里,使用不同的对象去访问自己独立的属性($this)

 

魔术方法

魔术方法指的是,系统已经为用户提前有声明好,但是需要用户显示的写出来的方法。魔术方法会在某些情况发生的时候,自动被调用。

魔术方法通常以__开头(不是用户定义的以__开头的函数称之为魔术方法)

 

构造方法

语法:__construct()

在类去实例化对象成功之后,会被自动调用的方法

重蔚自留地php学习第四十二天——对象(面向对象)

原理:当对象被初始化完成之后,对象都会跑会对应类空间去找构造方法__construct(),如果有则执行,没有则不执行而已。

构造方法有什么意义?

对对象属性进行初始化

重蔚自留地php学习第四十二天——对象(面向对象)

兼容构造方法

重蔚自留地php学习第四十二天——对象(面向对象)

兼容的通常做法

重蔚自留地php学习第四十二天——对象(面向对象)

动手练习:

  1. 新建一个Person类
  2. 在创建对象的时候,会自动对对象的属性进行初始化

 

析构方法

在对象被销毁的时候会自动调用的方法

语法:__destruct()

重蔚自留地php学习第四十二天——对象(面向对象)

虽然只创建一个对象,但是析构方法也会被执行。原因是因为在脚本结束之后,系统会释放所有的变量,包括$person

重蔚自留地php学习第四十二天——对象(面向对象)

有哪些方法可以销毁对象?

  1. 脚本执行结束,对象肯定被销毁
  2. 对象说白了还是变量,unset即可

重蔚自留地php学习第四十二天——对象(面向对象)

3.改变变量的值

重蔚自留地php学习第四十二天——对象(面向对象)

析构方法有什么用?

释放资源

 

如果定义了构造方法,但是使用private进行修饰,会是什么结果?

会报错,因为对象是在类外部创建的,而对象去调用一个私有的构造方法,所以会报错。

 

对象的比较

相等比较和全等比较

相等比较

重蔚自留地php学习第四十二天——对象(面向对象)

全等比较

重蔚自留地php学习第四十二天——对象(面向对象)

克隆,语法:clone 对象

指的是将一个对象,完完整整复制一份,新开票一块内存空间保存

克隆出来的对象不是同一个对象

重蔚自留地php学习第四十二天——对象(面向对象)

只有对象赋值给另外一个对象的时候,是全等的

重蔚自留地php学习第四十二天——对象(面向对象)

对象传值

对象的传值方式是引用传值

重蔚自留地php学习第四十二天——对象(面向对象)

 

动手练习:

  1. 新建类
  2. 使用构造方法和析构方法
  3. 进行对象比较

 

封装DB类

  1. 连接数据库
  2. 选择数据库
  3. 设置字符集
  4. 查询数据:查询一条记录,查询全部记录
  5. 插入数据
  6. 更新数据
  7. 删除数据

 

如何在类中去选择使用访问修饰限定符?

尽可能的让类去控制属性和方法。private->protected->public

建议:即便是使用public,也一定要显示的在属性和方法前面使用public 关键字进行修饰。

为什么要使用OOP编程?面向过程和面向对象有什么区别?

  1. 面向过程开发比面向对象开发简单,但是面向对象后期维护比面向过程简单很多
  2. 都是模块化编程,能够节省代码,代码的重构
  3. 面向对象的语言:Java,C#,C++(并不是一个完全的面向对象),PHP(也支持面向过程),javascript,面向过程的语言:C

ps:从今往后,在PHP的世界中,几乎没有面向过程,全部是面向对象。

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/10631.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2018年12月22日 10:22
下一篇 2018年12月26日 00:00

相关推荐

  • 如何在PHP中实现验证码。

    随着互联网的不断发展,越来越多的网站需要使用验证码来保证安全性。验证码是一种借助人类能力而无法被计算机破解的认证技术,广泛应用于网站注册、登录、找回密码等功能中。下面将介绍如何使用PHP实现验证码功能。…

    2023年5月22日
    02
  • 浅谈PHP中断言函数的用法

    本篇文章带大家了解PHP中断言函数的使用方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这个 asser…

    2023年3月29日
    00
  • 说说php怎么关闭。

    一、如何关闭PHP服务 要关闭PHP服务,首先需要了解您使用的是哪种Web服务器,以下是针对不同Web服务器关闭PHP服务的教程: 1. 1对于Apache Web服务器 在Linux系统中,可以使用以下命令关闭Apache Web服务器上的PHP…

    2024年6月15日
    00
  • PHP与数据库优化建议的集成。

    如今,在互联网领域,PHP和数据库已经成为开发者常用的技术。PHP与数据库的提高不仅仅意味着性能上的提高,即使在数据安全性和数据可靠性方面也将大大提高。因此,本文将探讨一些PHP和数据库方面的优化建议,以帮助…

    2023年5月21日
    01
  • 关于php使用thrift做服务端开发的那些事

    php使用thrift做服务端开发 thrift采用接口描述语言定义和创建服务,用二进制格式传输数据,体积更小、效率更高,对于高并发、数据量大和多语言的环境有更好的支持。 Apache Thrift是啥? Apache Thrift是FaceBook…

    2022年6月21日
    0113
  • (实用篇)PHP JSON数组与对象的理解

      在PHP后端和客户端数据交互的过程中,JSON数据中有时格式不定,一会儿是数组,一会儿是对象,弄得客户端开发人员要崩溃的感觉。 因此,前后端相关人员先对PHP的json_encode函数原理有必要的了解是最重要的一…

    2016年10月27日
    0235
  • PHP编写数据交互程序的步骤。

    随着大数据时代的到来,数据交互变得愈发重要。PHP是一种广泛使用的脚本语言,可以用于处理和交互各种类型的数据。本文将介绍PHP编写数据交互程序的步骤。 配置环境 在编写PHP数据交互程序前,需要先配置好用于存储…

    2023年5月21日
    05
  • 我们还会继续使用PHP的原因

    我们来开门见山地说。 PHP 是一门奇葩的语言。它既不快,语法又不漂亮。还没有遵守良好的软件开发实践。 但我还是使用它开发了很多软件。 那么问题就很明显了 为什么今天还在使用 PHP ? 除了个人理想主义的偏好以…

    2022年6月18日 PHP自学教程
    0127

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息