静态与非静态的区别
1. 设置出发点:静态是给类使用,非静态是给对象使用
2. 对象不能访问静态属性(对象访问属性只会去对象的内存区域(堆)找,而静态属性在代码区),对象能够访问静态方法(静态方法和普通方法都在代码区里)
3. 类能够访问普通方法(方法里面没有使用$this),类不能访问普通属性(属性是在对象空间里)
属性继承:所有的非静态属性都被继承(包括私有的非静态属性)
方法继承
1. 公有的可以被继承
2. 受保护的可以被继承 //$son->gongfu(); //调用失败,继承成功,受保护的方法不能在类外部访问
3. 私有的不能被继承 //调用失败,继承失败,私有的方法不能被继承
继承链
1. 凡是使用了extends继承,继承是双向的。只要在继承链上,就可以对链上的其他类的公有和受保护的方法进行访问。(子类继承了父类,那么父类可以访问子类方法)
重写
当子类拥有与父类同名的方法或者属性的时候,会重写父类的属性和方法。(非私有的,包括public protected 构造方法)私有属性
属性重写
PHP子类能否继承父类的构造方法?
1.如果没有定义子类构造方法的,默认调用父类构造方法
1. 如果定义了子类的构造方法,那么就直接调用自身,也即重写父类的构造方法
属性重载
访问不存在的或者权限不够的属性的时候,触发的魔术方法,若是存在的属性(如pbulic的属性),则不会调用该方法 __get()__set()__isset()__unset() yii框架中大量使用
方法重载
当访问一个权限不够或者不存在的方法的时候,会自动触发的方法
__call($name,$args):访问一个非静态方法两个参数方法名和参数数组
新增的__callStatic()方法则只用于静态类方法。当尝试调用类中不存在的静态方法时,__callStatic()魔术方法将被自动调用
PDO链接认证 数据增删改查 自定义结果集
预处理
bindParam与bindValue的区别
1. bindParam必须要先声明变量,再使用变量;bindValue可以直接使用值
2. bindValue是一次性的,而bindParam可以无限使用(因为使用的引用传值,一旦变量的值进行改变,那么对应的组织SQL语句时所用到的变量的值也跟着改变)