PHP简明教程-面向对象基础 2
2017-07-03 15:32
344 查看
PHP简明教程
面向对象基础 2
其他的几个魔术方法
方法名 | 触发时机 | 参数1 | 参数2 | 备注 |
---|---|---|---|---|
__callStatic | 当调用不存在的静态方法的时候自动执行这个方法 | 函数名 | 参数(数组) | 该方法必须是static |
__sleep | 当序列化一个对象的时候调用这个方法 | 无 | 无 | 有返回值,返回要序列化的属性,组成一个数组 |
__wakeup | 当反序列一个对象的时候调用 | 无 | 无 | 可以做一些初始化的工作 |
__clone | 当clone一个对象的时候会自动调用 | 无 | 无 | 可以修改一些属性 |
一些其他函数的应用
serialize:序列化
将程序中的一个对象进行序列化,然后保存起来
unserialize:反序列化
将序列化的字符串还原,恢复原来的对象
call_user_func
call_user_func([$xiang, 'eat'], 1000); == $xiang->eat(1000);
call_user_func_array
call_user_func_array([$xiang, 'eat'], [1000, 2000, 3000]); == $xiang->eat(1000,2000,3000);
var_export
输出或返回一个变量的字符串表示 $str = var_export($arr, true); 将一个数组变成生成数组的字符串保存起来
抽象类
抽象类关键字 abstract
抽象类不能实例化对象抽象类的目的就是让子类继承并实现其规定的抽象方法
子类中必须实现抽象类中规定的抽象方法
如果抽象方法中有参数并且参数有默认值,子类实现的时候也要有参数和默认值
抽象方法必须是
public或者
protected(要让子类继承)
抽象类可以继承抽象类 但是子类必须实现继承的抽象方法
接口
接口关键字 interface
接口中的方法都是抽象方法,并且是public实现接口用
implements
interface A { } class B implements A { //B类实现A类 }
可以同时实现多个接口,中间使用逗号隔开
interface AA { } class M implements A,AA { //M类同时实现A类和AA类 }
继承父类在实现接口之前
class C { } class D extends C implements A { //D类继承C类并实现A类 }
接口同样可以继承接口,但是子类必须实现所有方法
interface E extends A { //接口E继承接口A,E中必须实现A中所定义的方法 }
接口中不能添加成员变量
多态
重写是一种多态,相同的接口给不同的对象,得到的响应不同,也是多态trait
(特性)
php没有多继承 使用trait可以模拟实现多继承trait和
class的写法一样,只是把class变成了trait
trait A{ }
trait中可以添加成员变量,一般只添加成员方法
trait中的方法如果想要子类使用,必须是
public
trait不能被实例化
trait可以嵌套trait
trait B{ use A; }
解决多个trait中方法名冲突问题:(了解)
use Dun, Sword{ Dun::blood insteadof Sword; Dun::blood as blood1; Sword::blood as blood2; }
类型约束
类C语言(严格类型)function buy(Girl $girl)
命名空间 namespace
命名空间要结合自动加载实现MVC框架命名空间可以解决同一文件中不能有相同的类名问题
命名空间一般都小写
第一个命名空间的前面不能有任何的代码
命名空间的范围是一直向下,直到下一个命名空间的开始
:根空间,没有写命名空间的都在根空间下
use hello\Person; //使用命名空间下的类 use baby\Person as SeLang; //给命名空间下的类起别名 use namespace1\namespace2\Person //namespace2是namespace1的子空间
遍历对象
对象可以被当成数组来遍历,遍历的时候,键就是属性名,值就是属性值类外:
只能遍历public属性
类内:
所有属性都能遍历出来
$a = new A(); foreach($a as $key => $v)
匿名类
$obj = new class { public $name; public $height; function say() { echo '100'; } };
相关文章推荐
- PHP简明教程-面向对象基础 1
- PHP面向对象学习笔记之一 基础概念
- PHP面向对象基础笔记二
- PHP基础教程九之类与对象
- php面向对象视频笔记之第一章(面向对象基础)
- Java基础教程(4)--面向对象概念
- PHP 面向对对象基础(接口,类)
- PHP面向对象的程序设计继承--php高级最详细教程
- 《简明 Python 教程》笔记-----面向对象及系统相关
- php面向对象全攻略 (一) 面向对象基础知识
- php代码之面向对象基础一
- PHP面向对象的程序设计封装--php高级最详细教程
- PHP面向对象试题(基础部分)
- [推荐]javascript 面向对象技术基础教程
- php 面向对象基础
- php面向对象基础
- php面向对象(一) 初窥(php面向对象基础介绍)
- php面向对象基础
- php面向对象教程3
- php面向对象基础一