燕十八公益php课程---面向对象课堂笔记(二)

来源:互联网 发布:手机网页源码 编辑:程序博客网 时间:2024/05/01 11:47
一、魔术方法:
__clone()  当对象被克隆时,将会自动调用


__get()  该方法可用于访问私有、受保护的属性
         不存在的属性和方法也可调用,但不报错


__set()  当为无权操作的属性赋值时,或不存在的属性赋值时
          set自动调用,并且自动传2个参数 属性 属性值


__isset() 当isset判断对象不可见的属性时(protected、private、不存在的属性)
          会引发isset来执行    


__unset() 当用usset销毁对象的不可见属性时,会引发unset


__call()  $lisi->say(1,2,3)------没有say()方法----->__call('say',array(1,2,3))运行


__callstatic (php5.3里才添加的,比较新)   是调用不可见的静态方法时,自动调用
           human::cry(a,b,c)----没有cry方法---humanirang::__callstatic('say',array(a,b,c))运行


二、常量:无法修改的值
魔术常量:值随环境变动的


抽象类:无法实例化  类之前加 abstract 此类就成为抽象类,无法实例化
        抽象方法不能有方法体


        有抽象类,则此类未必有抽象方法    但是即使有抽象方法
        抽象方法


抽象类的意义:无



三、接口
interface
implements
接口的方法,本身就是抽象,不要有方法体,也不必加abstract


类如果是一个事物的抽象,那么接口,则是事物功能的抽象,
即:再把他们功能各拆成小块,再按功能自由组合


接口:本身就是抽象的,内部声明的方法,默认也是抽象的,不用加abstract


一个类可以一次性实现多个接口  语法用 implements


接口就是供组装成类用的,封闭起来


抽象类(就定义类模板)----具体子类实现


四、类的自动加载:__autoload


注:函数里的类,需要先调用函数,才能执行类


自动加载不一定只有autoload
spl_autoload_register