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. 普通方法能通过 ->/:: 来访问; (类外部只能通过->)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值