php笔记

作者: 蛋黄肉 | 来源:发表于2018-04-13 14:23 被阅读21次

    魔术方法

    • __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笔记

        本文链接:https://www.haomeiwen.com/subject/ugmckftx.html