oop总结


OOP的介绍
  定义
    面向对象程序设计php


  面向对象的优势
    分工明确
    提升开发效率
    提升项目的灵活性
    提升项目的可扩展性json


  特色
    封装
    继承
    多态数组

 


对象的操做
  实例化一个对象
    new 类名();
    new 类型;缓存


  定义类
    成员属性 修饰符
    成员方法 修饰符安全


  对象和类
    对象  类的实例     例如:房子
    类   对象的抽象  例如:房子的图纸函数


  对象实例化 和 调用
    new 类名() $this->this


  对象在内存中的存储
    对象名(地址)保存在栈中 先进后出
    对象内的代码保存在堆里 先进先出设计

 

 


封装性3d


  定义  把成员属性和成员方法 设置为非公有,就称为封装性code


  特色
    被封装的属性/方法 没法在外部调用
    只能经过$this-> 内部调用


  优势
    重用性
    可读性


  属性的封装
    实现 访问控制
    提高开发效率的同时,提醒咱们对象封装的底线

 

 


继承


  定义  子类继承父类的成员属性与成员方法


  类继承的应用
    做用  

      经过继承能够简化类的定义
      方便扩展,扩展功能能够写在子类中,不会对原有父类产生影响
      方便升级,经过继承不但包含了旧的方法,还同时添加了新的功能


    特色
      单继承
      一个父类能够被多个子类继承
      一个子类只能继承一个父类


    子类重写父类的方法
      定义跟父类方法重名的就能够重写
      子类中调用父类方法 parent::funName()

 


魔术方法
    __construct()
        可选参数,对象被实例化时自动触发
        做用  给属性赋初值,用于打开资源
    __destruct()
        没法传参,属性销毁以前自动触发
        做用  关闭构造方法中打开的资源
    __get($param)
        一个参数,在外部使用非公有属性是自动触发
        做用  在外部访问非公有属性
        注意  __get()必须是public
    __set($params,$values)
        两个参数,在对象外部设置非公有属性时自动触发
        做用  在对象外部设置封装属性
        注意  __set()必须是public
    __isset($param)
        一个参数,在对象外部检测封装属性是否存在时自动触发
        注意  使用empty()判断非公有属性时,必须配合__get()一块儿使用
    __unset($param)
        一个参数,用unset()销毁一个非公有属性时自动触发
        注意  销毁公有属性时,因为能够直接访问,因此不须要再设置该魔术方法
    __clone()
        在该对象被克隆的时自动触发
        注意  若是封装该魔术方法,会致使该对象不能被克隆
    __toString()
        用echo或print输出对象时自动触发
        做用  必须return一个string,通常用于对象的描述信息
    __invoke()
        把对象当作函数调用时自动触发
    __call($funName,$params)
        两个参数(方法名,值)当调用对象不存在的方法时自动触发
        做用  当用户调用了不存在的操做时,用来作友好的提示
    __callStatic($funName,$params)
        两个参数(方法名,值)当调用对象不存在的方法时自动触发
        做用  当用户调用了不存在的操做时,用来作友好的提示
    __sleep()
        当对象被串行化时,自动调用
    __wakeup()
        当已被串行化的对象被反串行化时,自动调用
    __autoload()
        当new实例化一个不存在的类时,则自动调用此函数“__autoload()”,并将类名做为参数传入此函数
        做用  帮助判断是否存在须要加载的类

 

 

关键字


    final
        能够用于修饰类和方法,最终版本,不能被重写
        做用  提升代码的安全性,可读性
        注意  不能使用final来修饰成员属性
    static
        用于修饰属性和方法,静态属性,静态方法,不须要实例化
        做用  类中的几个方法没有太大联系时,能够声明为静态方法
        注意  静态属性是共享的。也就是new不少对象也是共用一个属性
            因为静态修饰后,每次访问都是访问的同一个,因此不存在继承问题
            在一个类的方法中若没有出现$this的调用,默认此方法为静态方法
            静态方法中不可使用非静态的内容。就是不让使用$this
    const
        在类的内部 定义 常量
            内部 self::Name
            外部 类名::Name
        做用  给该类中的方法设置参数选项
    instanceof
        判断当前对象类是否属于某个类的类型 返回true/false
    abstract
        声明抽象方法和抽象类 有抽象方法的类就是抽象类
    串行化
        serialize()    串行化
        unserialize()    反串行化
        做用  把当前状态下的对象 连同对象格式与属性值的变换 转换为字符串格式
            对象是保存在内存中,寿命一般随着生成该对象的程序终止而终止,而串行化后的对象就能够实现永久存储,能够用作数据缓存
    json
        json_encode()  转化为json格式
        json_decode()  将被转化成json函数的数据还原
        做用  数组的永久存储
            便于不一样语言之间的数据传输(接口)
    stdClass
        快速获得一个对象
        注意  凡是用 new stdClass()的变量都不能够出现$a->test()这种方式的使用
    类型约束
        约束方法和函数的传输类型
        做用  数组 array $param
            类 类名 $param
    namespqce
        前不容许有任何的php代码

 

 


接口


    定义  一个语法,和平时熟知的API接口没有一点关系,使用interface定义
    interface  声明接口时使用
    特色
        接口中的方法,必须全是抽象方法(全部无需abstract声明)
        接口的全部成员实现,必须是常量
        所得权限必须是public
        声明接口不使用class,使用interface
        接口能够被类继承实现所有方法,也能够被抽象类继承实现部分方法
        接口继承不能用extends,用implements
    inplements实现接口
        一个类在继承另外一个类的同时,使用implements实现一个接口(必定要先继承在实现),能够实现多个接口,逗号隔开就好

 

 


异常处理


    错误处理
        错误级别
          parse error 解析错误
          fatal error 致命错误
          waring 警告
          notice 提示
          strict 规范建议
        自定义错误处理
          set_error_handler('funName')
          设置用户定义的错误处理函数,只能接收 waring 和 notice 错误


    异常处理
        一种可扩展,易维护的错误处理统一机制,提供了一种新的面向对象的错误错误处理方式
        异常处理方式  彻底交给系统自带的系统自带的异常处理类    Exception 是全部PHP异常的基类

 

 


命名空间
    定义  命名空间就是逻辑层面的目录结构 至关于在代码中分了文件夹
    做用  在不一样的目录中能够有相同的文件名 在不一样的命名空间中能够有相同的名字
    基本规则
        命名空间的定义语句前面不能有任何PHP代码
        命名空间不能控制普通变量的访问,不一样空间仍旧能够传递普通变量的值
        若是使用{}定义命名空间 那么括号外不能有任何代码
    限定名称
        非限定名称 test(); 当前空间下
        限定名称 A\test(); 相对路径 ./A/test()
        彻底限定名称 \A\test(); 绝对路径 从全局命名空间出发
    常量
        __NAMESPACE__当期所在空间的空间名

相关文章
相关标签/搜索