PHP类中一般方法与静态方法的疑问

本文探讨了PHP中类的静态方法与非静态方法的访问机制,解释了非静态方法为何也能通过::方式被访问的原因,并对比了两者之间的区别。
<?php
/*
产品类
*/
class Product{
    public static $Count=0;
    public $Name='';
    
    public function Show(){
        print('<p>Show Method</p>');
    }
    
    public static function Display(){
        print('<p>Display Static Method</>');
    }
}

$class = new ReflectionClass('Product');
print "<pre>";
Reflection::export($class);
print "</pre>";

Product::Display();
Product::Show();//为什么非静态方法在这里也可以用::的方式访问?
?>
Class [  class Product ] {
  @@ D:\WebRoot\static.php 5-16

  - Constants [0] {
  }

  - Static properties [1] {
    Property [ public static $Count ]
  }

  - Static methods [1] {
    Method [  static public method Display ] {
      @@ D:\WebRoot\static.php 13 - 15
    }
  }

  - Properties [1] {
    Property [  public $Name ]
  }

  - Methods [1] {
    Method [  public method Show ] {
      @@ D:\WebRoot\static.php 9 - 11
    }
  }
}

Display Static Method

Show Method

 

以上是程序执行的结果,Show方法明明是一个一般方法,为什么也可以用Product::Show()访问,程序并不会出错,这样访问和静态方法的访问不是一样吗?要是真是这样,那还要静态方法干吗?请哪位有明白的指点一二。谢谢!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值