内容简介:[回忆曾经]PHP面向对象基础学习笔记(一)
[TOC]
"回忆曾经"系列
曾经手写的笔记(以前我一共有两本笔记本,一本是完整版,其中的笔记都是非常完整的,另一本是副本,笔记是残缺的)
完整版和副本什么区别捏?
因为当初我在完整版内写的笔记都是草写的,虽然完整但是字有点丑。
所以想到了再拿一个笔记本认真的将完整版内的笔记重新记录一遍,但是后来因为忙的原因就没有继续记录了。
直到想起来打算继续写的时候,发现完整版已经不见了,感觉非常可惜!
现在打算将部分内容以这种形式敲出来,算是给自己重新巩固巩固吧,同时说不定也能帮助到有需要的兄台(有错误地方望指出)。
面向对象编程 -- OOP(Object Oriented Programming)
1.三大范式
-
面向过程;
-
面向对象;
-
函数式编程;
2.面向对象的三大特性
-
封装;
-
继承;
-
多态;
3.对象
-
万事万物皆为对象;
-
客观存在的任何一个实体;
4.类
4.1.类与对象的关系
-
先有类,通过类实例化出对象;
-
使用的是对象;
4.2.类的定义格式
class 类名 { [成员属性] 修饰符 属性名 [ = 值 ] [成员方法] [修饰符] function 方法名() {} } //除了以上两种成员之外,不能有其它任何代码
4.3.类的实例化
-
使用
new
关键字; -
每次
new
都会得到一个新对象; -
都会触发构造方法;
4.4.成员特性
4.4.1.成员属性
-
可以有默认值;
-
默认值不能是变量;
-
默认值可以是常量;
-
值可以是任意类型;
4.4.2.成员方法
-
和以往函数一样;
-
可以直接访问自己的成员属性
($this)
4.5.伪变量 -- $this
-
代表的是对象,表示的是自己;
-
不能在类的外面使用;
4.6.魔法方法
4.6.1.构造方法
-
和类名相同的方法;
-
也可以使用
__construct()
触发时机:在new
关键字得到新对象的时候;
4.6.2.析构方法
-
__destruct()
触发时机:在销毁对象的时候;
4.7.符号
-> :: = == ===
4.8.三大特征之封装篇
4.8.1.三大范围
-
自己(当前自己类);
-
家族(当前继承的类与被继承类之间的关系);
-
外部;
4.8.2.三个关键字
-
public(公有的);
-
protected(受保护的);
-
private(私有的);
4.8.3.三个范围与三个关键字间调用权限
| |public | protected | private | | ------------: | ------------: | ------------: | | 自己 |可以调用自己的public|可以调用自己的protected|可以调用自己的private| | 家族 |可以调用父类的public|可以调用父类的protected|不能调用父类的private| | 外部 |可以调用public方法|不能调用protected方法|不能调用private方法|
4.9.三大特征之继承篇
4.9.1.继承的特性
-
PHP中类只支持单继承,只能有一个爹;
-
PHP中类可以被多个继承,一个爹可以有多个儿子;
-
PHP中类可以多层继承,可以有祖孙关系;
-
子类会覆盖父类的同名方法;
-
权限只能扩大不能缩小;
-
访问的一定是最终版本,被子类覆盖后的结果(私有除外);
-
重写父类方法的时候,参数结构(参数格式,是否有默认值)要保持一致;
-
要求:重写父类的构造方法的时候,务必在第一行调用父类的构造方法,如:
类名::方法名(); parent::方法名();
4.10.关键字
final
-
可以修饰类和方法,不能修饰成员属性;
-
被它修饰的类,不能被继承;
-
被它修饰的方法,不能被重写;
static
-
可以修饰成员属性和成员方法,不能修饰类;
-
静态成员可以直接通过范围操作符调用,不用实例化;
-
静态方法不能出现非静态内容($this);
-
静态方法里不能使用非静态属性;
-
使用:类名::$属性名,类名::方法名,self::$属性名,self::方法名;
const
- 可以在类里定义常量;
instanceof
- 用于判断前面的对象是否是后面的类的实例;
clone
-
克隆一个新对象,会触发魔术方法
__clone
;
self
- 代表的是[类],表示的是自己;
this
- 代表的是[对象],表示的是自己;
parent
- 代表的是类,表示的是父类;
4.11.魔术方法
__construct
-
在使用
new
关键字的时候触发;
__desstruct
- 在销毁对象的时候触发;
__get
- 在获取没有权限访问或者不存在的成员属性的时候;
__set
- 在设置没有权限访问或者不存在的成员属性的时候;
__isset
-
在用
isset
或者empty
检测一个没有权限或者不存在的成员属性的时候;
__unset
-
在用
unset
删除一个没有权限或者不存在的成员属性的时候;
__call
- 调用一个没有权限或者不存在的方法时候;
__callstatic
- 调用一个没有权限访问或者不存在的静态方法的时候,但是自己也必须是一个静态的方法;
__tostring
- 将对象当做字符串输出的时候,必须返回一个字符串;
__invoke
- 将对象当作函数调用的时候;
__sleep
-
使用
serialize
串行化对象的时候
__wakeup
-
使用
unserialize
反串行化的时候
__clone
-
在使用
clone
关键字克隆对象的时候
__autoload
-
在实例化一个当前脚本不存在的类的时候,可以在这个方法里面使用
include
包含类文件(命名一定要规范)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 面向Python,面向对象(基础)
- 面向Python,面向对象(基础3)
- <<深入PHP面向对象、模式与实践>>读书笔记:面向对象设计和过程式编程
- 《JavaScript面向对象精要》之六:对象模式
- 《JavaScript面向对象精要》之三:理解对象
- 面向对象的程序设计之理解对象
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。