php面向对象笔记
1.程序都是要解决真实的业务逻辑!而且现实的业务逻辑,都是动作的主体在发出动作,而不是动作独立出现的!
2.语法
3
.
4访问属性: $object->stu_name;
访问方法:对象->方法名();
在方法中,访问对象,$this
$this,这个,这个对象。调用该方法的对象!
$this 就是一个方法内的局部变量!特殊在,方法被对象调用执行时,php会自动确定是哪个对象调用的该方法,会使用该对象为方法内的$this赋值
5.
构造方法,__construct()
在实例化类得到对象时被自动地调用!
主要承担的工作是初始化对象属性!
如果没有定义__construct()可以不用执行!
但是一旦定义了构造方法,那么构造(实例化)的过程,一定要包括这个调用构造方法的过程(构造方法一定会执行)。
TIP:有时也称,实例化对象为构造对象!
构造方法可以自动被调用!
注意
1, 构造方法可以是一个别的名字
一个与类名相同的方法,也可能是构造方法!
1, 在new class_name时:
new Student
new Student();
取决于是否存在构造函数的必要参数!
6.
析构方法,__destruct
与构造方法相对,表示在对象被销毁时,自动调用的方法!
对象被销毁,但是对象所占用的资源不一定完全被销毁!
在对象被销毁时调用,作用是,用于释放对象所占用的额外资源!而不是对象本身!
注意:
1对象在什么时候被销毁?
在用户脚本结束后,所有的资源包括对象都被销毁!
2保存对象的变量被提前unset!
1, 保存对象的变量,被赋予了一个新的值!
7
如果一个方法或者函数参数过多,或者参数不能确定时:会选择使用数组的形式完成处理:
在构造方法内,先完成对属性的初始化!
升级:对参数选项增加一个默认值的概念,类似于端口,编码,可以在常规情况下实例化时省略!
在构造方法内,对属性初始化时,对默认值做处理:
8
类的静态成员,static
静态成员,指的是逻辑上被所有的对象所共享,属于类的成员称之为类的静态成员!
分成静态属性和静态方法
保存数据的是静态属性,执行功能的静态方法!
9
声明
额外增加一个 static 关键字!
属性:
方法:
10.
访问
->访问对象成员,静态为类的成员
因此,应该使用类访问,
类 :: 成员!
::,静态访问符,类访问符(范围解析操作符)
在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。
另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。
11.
类似于$this,同样存在一个self关键字(注意没有$),在类中,代表当前类!
$this:这个对象, $this->
self:类自己,self::
12.
注意
1, 访问上,静态成员只能使用::静态访问符号访问!
典型的,::前应该是类,类内可以使用self。
但是,php支持: 对象::静态成员!
尽量不要这么写!
1, 访问上,静态成员使用类访问,而非静态成员使用对象访问。
但是,问题出现在 方法上!
测试1,使用类访问,静态与非静态方法:
测试2,适用对象访问:
结论:‘无论是静态方法,还是非静态方法,都可以使用类或者对象来访问。那么静态方法与非静态方法的意义在于哪里?
现象的原因:方法是可执行性代码的集合,针对多个对象都是一致的!
区别在哪?
在于$this的使用上!
只有在使用对象调用非静态方法时,才可以使用$this!
静态静态方法,无论如何也不能对$this做处理
而非静态方法,只有确定了对象,才能确定$this的值!
11,
类常量,const
在类内定义,属于类的常量!
定义
使用关键字 const声明!
而且,没有访问修饰限定符。
12,
访问
使用类访问,与访问静态成员类似:
类::常量名.
总结
类中,一共只有5种语法:
属性,方法,静态属性,静态方法,类常量