TypechoJoeTheme

Dcr163的博客

统计

PHP面向对象中静态属性和静态方法讲解

2015-10-18
/
0 评论
/
743 阅读
/
正在检测是否收录...
10/18

 静态方法
 static public/protected/private function(){
 }
 
 
 普通方法,存放于类内,只有一份
 静态方法,也是存放于类内,只有一份
 
 区别在于:普通方法需要对象去调用,需要绑定$this
 即普通方法必须要有对象,用对象调动
 
而静态方法,不属于哪个对象,因此不需要去绑定$this
即 静态方法,通过类名可以调用
 */
class Human{
    public $name='小红';
    static public function Cry(){
        echo '555大哭';
    }
    public function eat() {
        echo '吃饭吧';
    }
    public function hello() {
        echo $this->name;
    }
}


echo Human::Cry();


//echo Human::eat();
/*
从逻辑来理解,如果用类名静态调用非静态方法
比如:eat()
那么:$this 到底是指哪个对象???

因此直接报错:
Strict standards: Non-static method Human::eat() should not be called statically in D:\wamp\www\bbs2\class6.php on line 31
 */

/* 如上分享,其实非静态方法,是不能友类名静态调用的
但是,PHP中的面向对象检查的并不严格
只要该方法没有$this,就会转化静态方法来调用
因此PHP5.3之前的eat(),是可以调用的

但是,在PHP5.3的strict级别下,或者PHP5.4的默认级别都已经对
类名::非静态  方法做了提示 */
echo '<hr />';


//动访问静
$jun=new Human();
echo $jun->Cry();

/*
类-->访问->静态方法            可以
类-->访问->动态方法            不可以
对象-->访问-->动态方法        可以
对象-->访问->静态方法        可以
 */

朗读
赞(0)
版权属于:

Dcr163的博客

本文链接:

https://dcr163.cn/30.html(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. William Tardent
    2024-02-27
  2. Maryann Hamer
    2024-02-27
  3. Sanora Pantano
    2024-02-24
  4. aa
    2024-02-21
  5. Kassie Baum
    2024-01-28

标签云