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