• 面对对象


    1、类里面有三种成员:属性(普通属性,静态属性),方法(普通方法,静态方法,魔术方法(

    __construct,__destruct,__set,__get,__isset,__unset,_call,__callStatic,__sleep,__wakeup,__clone

    )),常量(访问权限为public),属性和方法可以加访问权限修饰符(public,protected,private)

    2、魔术方法:

      1、__construct()构造方法,创建对象时调用,  __destruct()析构方法,对象被销毁(unset)或页面运行完毕时调用

      2、属性重载器:__set,在类外部给一个不可访问属性如private,protected或者没有的属性赋值时,会调用,  __get,  __isset,在类外对一个不可访问属性使用isset方法时调用,  __unset,在类外对一个不可访问属性使用unset方法时调用

      3、方法重载器:__call,在类外部调用一个不可访问方法时调用,__callStatic,在类外部用静态方式访问一个不可访问方法时调用

    类里面的静态方法里不能用$this

    3、子类调用父类,$this或静态调用(Parent::$fun)

    4、后期静态绑定,在父类中static::,父类想访问子类成员(属性、方法、常量)

    5、类是单继承的,一个类可以实现(implements)多个接口;接口可以继承多个接口(接口拆分)

    6、接口是一种规范,与第三方合作的说明书。如果一个类实现了一个接口,那么这个类的实例就属于接口类型,class s implements p;$s = new s;检测$s instanceof p === true; 

    7、抽象类里可以有具体方法,抽象类的常量在子类中可以修改,抽象类不能实例化

    8、自动加载(类,接口,命名空间):spl_autoload_register,get_include_path,set_include_path,PATH_SEPARATOR(windows下是‘;’,linux下是‘:’)

    9、序列化(serialize,__sleep控制哪些属性序列化)与反序列化(unserialize,__wakeup准备其他资源,连接数据库)

    10、对象复制,clone浅复制(只复制表面一层,若里面属性的值含有如对象,修改复制的对象里面的值,则会影响原有对象),深复制(克隆的两个对象完全脱离关系),使用__clone,在方法里clone,在类外部调用clone时,会触发__clone();

    11、trait,不能实例化,里面不能有常量,使用方法use traitName,调用优先级本类>trait>父类;trait里可以有抽象方法,使用时要实现

    12、final类不能被继承,final方法不能部覆盖

    13、$obj instanceof $class,检测对象是否属于某一个类或父类

    14、对象的遍历,直接用foreach

    15、对象的比较 $obj1==$obj2返回true,则是同一个类的实例

    16、命名空间成员:接口,类,函数,常量,变量

    17、__METHOD__,__CLASS__,__NAMESPACE__

  • 相关阅读:
    3、二进制的秘闻和不同进制间的转换
    Hello World!
    HDU5883 The Best Path(欧拉回路 | 通路下求XOR的最大值)
    Codeforces 722C(并查集 + 思维)
    Floyd 算法求多源最短路径
    vim 配置
    STL容器 -- Vector
    STL容器 -- Bitset
    HDU 5707 Combine String(动态规划)
    HDU 5876 Sparse Graph(补图上BFS)
  • 原文地址:https://www.cnblogs.com/maidongdong/p/11416539.html
Copyright © 2020-2023  润新知