PHP[OOP入门]PH01-面向对象基本语法

该部分为 php 面向对象的入门部分,较为肤浅且参杂过分已经不是主流的知识。

这是我早期的 php 学习笔记,php 的学习版本版本是 5.6、7,🐟2020/05/06年从有道笔记导出至此。

day01-面向对象基本语法

为什么学习面向对象

对象:此对非彼对象 对象就是普通的对象

学完面向对象之后我们的代码非常的紧凑和高雅

现在很多语言都是面向对象的 java c++ c#

面向过程和面向对象

以前我们写的代码:是面向过程的

举例子:

谈个对象====结婚 盖房子

  • 面向过程
    • 打地基
    • 买砖
    • 盖房子
    • 装修
    • 娶媳妇
  • 面向对象
    • 创建打地基的对象
    • 创建买砖对象买砖
    • 包工头
    • 装修工
    • 自己来吧

万物皆对象,多个对象协同工作共同完成一个功能

如果面向过程是数学逻辑的映射,那么面向对象就是生活逻辑的映射

语法层面:封装、继承、多态

思想方面:学习面向对象语言最重要的就是思想的转变,语法其实没什么,人家规定怎么写我们就怎么写

类和对象

生活角度

什么是类:人类(统称),都具有共同的属性和行为,是一个抽象的概念

人类 对象(刘翔)

汽车 你的奔驰

电脑 你桌子上面的电脑

官方解释:

类:对象的抽象

对象:类的具象

编码角度 (int)

在代码中,类就是一种数据类型,int没有占用空间类型,具体到某个变量才有空间类型,类比,我们的对象也是如此,类并没有空间,对象才有空间

类的简单使用

属性和行为

类名命名规范

成员属性和成员方法

1、要以class关键字开始,问 class就是类的意思

2、类名

3、大括号里面定义这个类

4、成员变量定义都要以public开始,以分号结尾

5、成员方法就是以前的函数,以前函数怎么定义,现在还怎么定义

6、成员方法前面也可以加public,也可以不加,如果不加的话,默认就是public

7、类名:命名规范,大驼峰原则

happybirthday

happyBirthday 小驼峰

HappyBirthday 大驼峰

创建对象三种方法

//创建对象第一种

//Person后面的小括号可加可不加

$xiang = new Person();

//echo $xiang; //不能使用这种方式打印

//var_dump($xiang);

//创建对象第二种方法 通过对象创建另外一个对象 基本不用

$liu = new $xiang;

//var_dump($liu);

//创建对象第三种方法 后续经常使用的一种方式

$className = 'Person';

$liuXiang = new $className();

var_dump($liuXiang);

对象访问属性和方法

$fang->age;

$fang->cook();

构造方法和this关键字

this:代表的是当前对象,在类里面访问自己的成员属性和成员方法的时候我们就要使用this

引入构造方法

__construct()

不传递参数构造方法

传递参数构造方法

在类里面要访问自己的成员属性和成员方法

访问控制修饰符

public:公共的 在类的外部,可以通过对象直接访问这些成员属性

private:私有的 在类的外部,不可以通过对象直接访问这些成员属性

在类的内部,都可以通过this关键字来直接访问所有成员属性

间接访问私有成员变量

因为私有的成员属性,在类的外部不能直接访问,但是在类的内部可以直接访问,所以我们可以在类里面增加一个函数,通过该函数来间接访问这些私有的成员属性(封装性)

几个魔术方法

魔术方法:在php中以 __开头的都是魔术方法

特点:系统在特定的时机自动调用的方法

__get(获取值)

触发时机:当外部访问私有的成员属性的时候自动调用这个方法

参数:属性名

__set(设置值)

触发时机:当外部设置私有的成员属性的时候自动调用这个方法

参数:属性名,值

__unset

__isset

__construct

__destruct