• 面向对象


    1.类和对象的定义
    类: 属性与方法的集合
    对象:类实例化的结果
    class是定义类的关键字
    new是实例化类的关键字
    类中的元素有:成员属性、成员方法、静态属性、静态方法、常量。
    三大特性:封装 继承 多态
    2.访问修饰符
    public(公共的权限):在任何地方都可以访问,主要包括:类内、类外、子类中,都可以访问
    protected(受保护的权限):只能在本类和子类中可以被访问,在类外无权访问
    private(私有的权限):只能在本类中被访问,在类外和子类中都无权访问
    注意:成员属性不能省略权限控制符

    3.类常量
    常量是一个值永远不变的量,常量不能修改和删除
    使用const来定义类常量
    一个只会有一份常量,不可能有多份常量。节省内存空间
    类常量不能加权限控制符
    调用类常量的方式:ClassName::常量名称

    4.静态属性和静态方法
    static关键字修饰的属性,就是静态属性
    static关键字修饰的属性,就是静态方法
    静态属性和静态方法,是与类相关的,与对象无关
    静态属性和静态方法,可以节省内存空间,不会因为对象的增加而增加。
    调用静态属性/方法的方式:ClassName::常量名称


    5.self关键字
    $this代表当前对象;self代表当前类。
    $this和self都只能在类中的方法中使用
    $this用来调用对象属性和方法
    Self用来调用类的属性(静态属性)、类的方法(静态方法)、类的常量

    6.构造方法
    定义:当创建对象时,第1个自动调用的方法,就是构造方法
    名称:__construct();
    构造方法一般都是自动调用,不需要手动调用
    构造方法只能是成员方法,不能是静态方法

    7.析构方法
    定义:当一个对象销毁前,自动调用的方法,就是析构方法
    名称:__destruct()
    析构方法一定没有参数,也没有返回值
    作用:在对象销毁前,做一些清理工作、处理工作、额外工作
    大部分情况下,析构方法几乎不用。因为网页执行完毕,网页中相关的变量都全部销毁

    8.类的继承性
    基础类(基类):最顶层的类,应该是所有子类中共有的内容。
    继承:就是将父类的所有东西全部拿过来,一个不剩下的
    单继承:只能从一个父类来继承。如:PHP、Java、VB等。

    构造方法和析构方法的继承
    子类继承了父类,父类中所有内容都会被继承,包括构造方法和析构方法

    9.parent关键字与self关键字的区别
    Self关键字总是代表本类;parent代表父类
    Self只能在本类中来使用;parent只能在子类中来使用
    Self可以调用本类的内容:类常量、静态属性、静态方法、成员方法
    Parent可以调用父类的内容:类常量、静态属性、静态方法、成员方法
    Self和parent不能调用成员属性

    10.类的多态性
    类的多态,主要指方法重载和方法重写
    方法重载:在一个类中,定义两个同名方法。PHP不支持函数重载或方法重载
    方法重写:就是父类中有的方法,在子类中用同样的名称,再定义一次
    方法重写的目的,主要是实现项目功能的升级
    构造方法重写,两个构造方法的参数个数,可以不一致。但是,其它方法重写时,参数个数必须一致。

    11.最终类和最终方法
    Final关键字修饰的类,就是最终类
    Final关键字修饰的方法,就是最终方法
    最终类:该类不需要继承,直接实例化即可。如:数据库操作类
    最终方法:该方法十分完善,不需要重写,只能继承使用
    最终方法只能继承,不能重写。最终方法和最终类不能同时使用。

    12.抽象类和抽象方法
    abstract关键字修饰的类,就是抽象类
    abstract关键字修饰的方法,就是抽象方法
    该类只能被继承,不能直接实例化。常用于基础类
    所有的抽象方法,在子类中必须要被重写

    13.接口
    使用interface关键字,来定义一个接口,接口也是一个特殊类
    接口可以继承接口;抽象类也可以继承抽象类;类也可以继承类
    接口中的方法默认都是抽象方法,不需要再加abstract关键字。
    接口中的方法也可以是成员方法,也可以是静态方法
    创建一个子类,来重写接口中的所有抽象方法
    接口中的常量,只能继承,不能重写。
    接口中的所有方法,权限必须是public权限

    14.常规的自动加载类函数__autoload($className)
    自定义自动加载类文件函数(spl_autoload_register)

    类的自动加载,是使用系统的内置函数__autoload()来实现的
    函数名称__autoload()是固定的
    __autoload($className)函数是自动调用的
    __autoload()函数,只能实现简单的类文件的加载;而spl_autoload_register()可以实现复杂类文件加载
    描述:注册__autoload()函数,注册多个__autoload()函数的队列
    语法:bool spl_autoload_register ([ callback $autoload_function ] )
    spl_autload_register()函数的参数可以是一个字符串的函数名,也可以是一个匿名函数

    15.对象克隆
    克隆对象,使用clone关键字来实现。可以产生两个真正的对象。
    当对象克隆完成后时,如果存在克隆方法,就会自动调用。
    克隆方法的作用:可以在对象克隆完成后,添加对象属性、修改对象属性的值。
    大部分魔术方法都是自动调用,不需要手动调用

    16.常用的魔术方法
    1、__toString()
    __toString()当将对象转成字符串,自动调用的方法
    2.__invoke()
    描述:当将一个对象,当成函数调用时,__invoke()会自动调用。

    17.单例模式
    单例模式设计要求(三私一公)
    一私:私有的静态的保存当前对象的属性
    一私:私有的构造方法,阻止类外new对象
    一私:私有的克隆方法,阻止类外clone对象
    一公:公共的静态的创建对象的方法

    18.instanceof关键字
    描述:判断一个对象是不是某一个类的实例
    语法:$obj instanceof ClassName
    返回:如果$obj是ClassName类的实例,则返回true;否则,返回false。

    19.重载
    PHP不支持重载。
    PHP中的重载,主要通过是通过魔术方法来实现的
    当你访问不存在或不可访问的属性时,魔术方法会自动调用
    魔术方法的作用:屏蔽一些错误。


    属性重载
    __set()
    描述:在给不可访问属性赋值时,__set() 会被调用
    语法:public void __set ( string $name , mixed $value )
    __get()
    描述: 读取不可访问属性的值时,__get() 会被调用
    语法:public mixed __get ( string $name )
    __isset()
    描述:当对不可访问属性调用 isset() 或 empty() 时,__isset()会被调用。
    语法:public bool __isset ( string $name )
    __unset()
    描述:当对不可访问属性调用 unset() 时,__unset()会被调用。
    语法:public void __unset ( string $name )


    方法重载
    __call()
    描述:在对象中调用一个不可访问方法时,__call() 会被调用。
    语法:public mixed __call ( string $name , array $arguments )
    参数:
    $name就是要调用的方法的名称
    $arguments就是调用方法传递的参数的数组
    __callStatic()
    描述:用静态方式中调用一个不可访问方法时,__callStatic() 会被调用。
    语法:public static mixed __callStatic ( string $name , array $arguments )

    20.序列化
    序列化:将变量转成可保存的字符串,并且不丢失变量的结构和类型。
    反序列化:将变量字符串,再还原成变量。
    提示:所有变量都可以序列化,除资源外

    serialize()
    描述:产生一个可存储的值的表示
    语法:string serialize ( mixed $value )
    unserialize()
    描述:从已存储的表示中创建 PHP 的值
    语法:mixed unserialize ( string $str )

    21.常用的魔术常量
    __LINE__:当前行号
    __FILE__:当前文件的绝对路径
    __DIR__:当前目录
    __FUNCTION__:当前函数
    __CLASS__:当前类名
    __METHOD__:当前方法

    22.常用类和对象的操作函数
    1.检查类是否定义class_exists()
    2.检查接口是否存在interface_exists()
    检查方法是否存在method_exists()
    检查属性是否存在property_exists()
    3.返回对象的类名get_class()
    4.返回父类名称get_parent_class()
    5、检查一个变量是不是对象is_object()

  • 相关阅读:
    BZOJ_2661_[BeiJing wc2012]连连看_费用流
    BZOJ_4867_[Ynoi2017]舌尖上的由乃_分块+dfs序
    BZOJ_3238_[Ahoi2013]差异_后缀自动机
    BZOJ_3207_花神的嘲讽计划Ⅰ_哈希+主席树
    [转载]快速幂与矩阵快速幂
    ACM的一点基础知识
    [转载]C++STL—vector的插入与删除
    C++STL—map的使用
    [转载]汇编语言assume伪指令的作用
    [转载]c++中的位运算符
  • 原文地址:https://www.cnblogs.com/songyanan/p/7782862.html
Copyright © 2020-2023  润新知