PHP面向对象之静态与非静态的调用方式 小结

@

对于 属性 来说

类内部的调用方式

  1. 静态属性的属性
  2. 普通属性类具体实例化出的对象的属性
  3. 所以二者是完全不同的, 调用方式也非常不同

    • 静态属性 self::$静态属性名类名::$静态属性名
    • 普通属性 $this->普通属性名

类外部的调用方式

  1. 静态属性的属性
  2. 普通属性类具体实例化出的对象的属性
  3. 所以二者是完全不同的, 调用方式也非常不同

    • 静态属性 类名::$静态属性名
    • 普通属性 实例化对象->普通属性名

对于 方法 来说

对于方法, 无论 普通还是静态, 它们都是属于类的, 所以理论上, 它们的调用方式 ->/:: 是可以互换的, 但事实上, 还是应该严格区分, 否则可能会报 Deprecated...;

类内部的调用方式

  1. 普通方法 可以使用 $this->普通方法名() 来进行调用;

    • 也可以使用 self::$普通方法名()
  2. 静态方法 可以使用 self::$静态方法名() / 类名::$静态方法名() 来进行调用;

    • 也可以使用 $this->$静态方法名()
  3. 即类内部 普通方法静态方法 的调用方式可以互换;

类外部的调用方式

  1. 普通方法 可以使用 实例化对象->普通方法名() 来进行调用;

    • 注意: 使用 类名::普通方法名() / 实例化对象::普通方法名() 都会报 Deprecated:非静态方法不应该按照镜头盖方法的调用方式来使用
  2. 静态方法 可以使用 类名::$静态方法名() 来进行调用;

    • 注意:静态方法也可以使用 实例化对象->普通方法名() 来进行调用; (静态属性不可以)

静态/非静态方法中的调用权限

  1. 静态方法中只能使用 静态调用方式::来调用 静态属性, 静态方法, 非静态方法; 不能使用::调用非静态属性;
  2. 非静态普通方法中可以调用 静态/非静态属性/方法;

小结

  1. 静态属性/方法, 只能通过 :: 来访问;
  2. 普通属性只能通过 -> 来访问;
  3. 普通方法能通过 ->/:: 来访问; (类外部只能通过->)
阅读 1.5k

编程空间
欢迎大家交流学习, 有帮助的不要忘记 点赞 和 收藏!

睹物思人~~

772 声望
105 粉丝
0 条评论

睹物思人~~

772 声望
105 粉丝
文章目录
宣传栏