类和对象 =》模板和成品的关系

修饰符:

  private 只能在类内部使用     protect 只能在继承链上使用    public 在任何地方都能使用

  $this 在类内部可以调用类的属性和方法(类的实例化对象)

继承:

  重名方法的时候,子类会覆盖父类方法。

  在子类构造方法中执行 parent::__construct();    那么实例化的时候,会先执行父类构造方法,再执行子类的构造方法。

final关键字:

  final class A { } //这个类不能被继承    final function a(){ }  //那么这个方法不能被重写     (否则会出错)

命名空间:

  解决(类,常量,方法)的重名问题 ,通过 use 命名空间将类导入当前类中去,通过 use A\Student  as s;来重命名。

  没有定义命名空间的类,是全局空间,在使用类的时候,类前面加 \

 

类的自动加载 :

  php内置函数:__autoload( $className ){ require  $className . ‘.php’ }  //当我们在实例化一个类时,如果发现这个类不存在,自动的会调用这个方法加载类文件(会丢弃)

  推荐使用这个

或者这样:

使用:

 

static 关键字

  后期静态绑定 : static类似self,区别是static代表的是调用方法的类,self代表类本身

  

 

魔术方法:

 __get()获取不可访问的属性时

 __set()设置不可访问的属性时  

 __issset()检测私有属性是否存在,当属性不可访问时,就会自动调用该魔术方法

 __unset()删除不可访问的私有属性的时候,会自动调用  

 __call()调用不存在的方法时

 __callStatic调用不存在的静态方法时

 __invoke当对象以函数的方式调用时

 __toString 当打印对象的时候

  __clone 当使用clone关键字时自动调用

  

 

对象拷贝和类型约束:

  对象拷贝有2种:浅拷贝(址传递:php中)  ; 深拷贝(值传递)

默认是浅拷贝

 

 可以通过clone 关键字,变成深拷贝

 

trait关键字:

  php中的类只能单继承,trait突破类单继承的问题。可以使用trait关键字将原来需要继承的类改为用trait包含属性与方法, 同时使用use调用,trait也支持trait嵌套

 

 

接口类+抽象类+设计模式:

  接口是类的模板,类是对象的模板。

  接口类:(接口中方法不能有方法体)

  

  

 

  单列模式:同一个类只被实例化一次,避免浪费系统资源

  

  

  (不能被实例化,不能被拷贝)

  

  工厂模式:负责创建类的实例

 

posted on 2018-03-27 22:29  程序猿的点滴生活  阅读(87)  评论(0编辑  收藏  举报