PHP重写
parent::work(); work() 是父类的方法明
parent::__construct($name,$age) 初始化父类的属性
PHP常用的魔术方法
__get 再类的外部去访问私有的或者受保护的属性时会调用 返回的是你访问的属性名、
__set 再类的外部去设置私有的或者受保护的属性时会调用
__unset 对象再外部销毁私有属性或者受保护的属性的时候调用
该方法有一个参数 是私有成员属性名
__isset 对象再外部判断私有属性或者受保护成员属性的时候调用
该方法有一个参数 是私有成员属性名
__construct 构造方法
该方法再创建对象的时候自动调用
__destruct 析构方法
在对象被销毁的时候她会自动调用这个方法
__toString
当你echo 一个对象的时候会被调用 该函数需要return一个字符串
__debufInfo
当你var_dump() 一个对象的时候会被调用 该函数需要return一个数组
__call()
当你调用一个不存在的对象或方法的时候会被调用
__callStatic
当你调用一个不存在的静态方法的时候会调用
__clone
当你克隆一个对象的时候调用 你可以对克隆的属性进行一些操作,或者一些初始化
__autoload() (这是唯一一个写在类外面的魔术方法)
当你new 一个对象的时候,当前脚本没有这个类,那么会触发这个方法
参数就是该类的类名
PHP常量
常量前面不能加修饰符
在类的外面定义常量使用defind(),在类的内部定义常量使用const();
php静态方法
在类的外部调用类的属性需要加上$符号,比如
Person::$name //静态属性
Person::test() //静态方法
在类的内部访问静态属性,如下
self::test()
self::$name;
在静态方法中不能出现this关键字
PHP抽象类
抽象类用abstract class Person
注意
1,抽象类不能实例化对象
2,抽象类的存在目的是为了让子类继承
3,抽象类和普通类的定义方式一样,只是在前面加了一个abstract
4,抽象类里面必须有抽象方法,抽象方法是用来让子类来实现的,而且子类必须实现,如果不实现的话就会报错
5,抽象方法只能是public或者protected
6,抽象方法如果有参数,参数有默认值,那么实现该方法的时候参数和默认值都要有
7,抽象类可以继承抽象类,子类在实现的时候所有的抽象方法都得实现
PHP接口
interface:接口
implements:实现
注意
1,接口中的方法都是抽象方法
2,接口中的方法必须是public
3,接口中只能规定方法,不能写属性,(接口中可以写常量)
4,一个类可以实现多个接口,中间用逗号隔开
5,一个类可以先继承父类,然后在实现接口
6,接口可以继承接口,但是里面的方法都要实现
trait(特性)
trait就是用来模拟实现多继承的
定义trait要以trait关键字开头,然后里面的写法和正常类里面的写法一样
一般情况下我们trait中我们不添加成员属性,只添加成员方法
trait不能实例化
trait中的方法想让子类使用的话,该方法必须是public
trait可以嵌套trait
用的时候直接在类里面use 一下类型就行
常用方法
字符串调用函数
call_user_func('test',1)
call_user_func_array('test',['参数1','参数1'])
异常处理函数
set_exception_handler('test');
throw new Exception('现在有异常了')
function test()
{
echo $e->getMessage();
}
强烈推荐学习网站
http://xiaoyupp.top/index/Muke/index