php笔记

魔术方法

  • __constructor () {} 构造函数
  • __destruct 析构函数
  • __set 两个参数,要设置对象的名称,设置对象的值,当修改了对象的属性的时候,这个方法被调用,
  • __get 一个参数,获取对象的名称,当对象的属性被获取的时候,这个方法被调用
  • __isset 一个参数,对象属性名,当类外使用isset判断属性是否存在时被调用
  • __unset 一个参数,对象属性名,当类外使用unset删除属性时被调用

继承

  • class A extends B
  • private 只能在当前类中访问
  • protect 只能在当前类或子类中访问
  • public 在当前类中,子类中,类外都可以访问
  • 在子类的方法中使用parent::fun() 调用父类的方法,子类的权限要低于父类(父public,子只能是public)

关键字

final
  • final 标识的类不能被继承
  • final 标识的方法不能被子类覆盖
static
  • 在类中使用static关键字声明的方法和变量在对象中共享
  • 在方法中使用selt::$name使用变量或方法
  • 可以用来统计类声明了对象的数量
  • 涉及到单态设计模式
const
  • 在类的内部定义常亮
  • 使用const声明的常量名称钱不使用$
  • 变量名通常是大写的
instanceof
  • 判断对象是否是类的实例
  • 判断类是否是父类的子类
  • 语法:$man instanceof Person
克隆对象(深复制)
$p1 = new Person();
$p2 = clone $p1;
  • 克隆时会自动调用类中的__clone函数

通用方法

toString
  • 通过obj.toString()方式调用类中的__toString函数
  • 打印出__toString函数的返回值
  • __toString中至少有一个参数作为返回值
__call
  • 如果调用对象中不存在的方法,则自动执行__call函数
  • __call函数有两个返回值:方法名(String)和参数(Array)

自动加载类

  • 方便引用类,如果没有在当前作用域内找到类名,则自动调用全局__autoload方法。
function __autoload($className){
    include(strtolower($className).".class.php")
}
  • 要求类名采用xxxx.class.php的格式

对象串行化 313

  • 对象串行化就是把对象转成二进制数据,方便传输或者保存
  • 对象串行化方法:$person_string = serialize($person)
  • 将串行化后的对象转成对象:$person_string = unserialize
  • 使用serialize时会自动调用类中的__sleep函数,这个函数返回一个含有多个对象属性的数组,规定了哪些属性需要被串行化

抽象类与接口

抽象类

  • 只要有一个抽象函数就叫做抽象类。
  • 抽象类可以拥有不抽象的方法或属性,但是不能用private关键字修饰

你可能感兴趣的:(php笔记)