關於PHP靜態方法呼叫和實例化類別呼叫的區別

不言
發布: 2023-03-23 10:00:01
原創
2683 人瀏覽過

本篇文章的內容介紹的是關於PHP靜態方法呼叫和實例化類別呼叫的區別,現在分享給大家,有需要的朋友可以參考一下

1.首先來澄清一些觀點

  由於靜態方法在記憶體中只有一份,無論你調用多少次,都是共用的,而且沒有物件的概念,所以不能在靜態方法裡面使用$this調用,如果非得調用的話,只能實例化自身類別

  而實例化不一樣,每一個實例化是一個對象,在記憶體中是多個的


關於PHP靜態方法呼叫和實例化類別呼叫的區別

<?phpError_reporting (E_ALL|E_STRICT);class A{    
    public function bar(){        echo &#39;bar&#39;.PHP_EOL;
    }    public static function foo(){        echo &#39;foo&#39;.PHP_EOL;
    }
}

A::bar();//会报错
A::foo();//正确
$obj = new A();
$obj -> foo();//正确
登入後複製
/* 
  bar()是一个非静态方法,应该由对象来调用,但用静态来调用此方法也可以执行,而严格状态下,此方法会执行,同时报错, 
  Strict Standards: Non-static method Human::easyeat() should not be called statically in........
  但是实例化的类是可以调用静态方法的。
*/
登入後複製

關於PHP靜態方法呼叫和實例化類別呼叫的區別


關於PHP靜態方法呼叫和實例化類別呼叫的區別

<?phpclass A{    public $name = &#39;zongshuai&#39;;    public function bar(){        echo &#39;bar&#39;.PHP_EOL;
    }    public static function foo(){        echo self::$name.PHP_EOL;//报错
    }
}

A::foo();/*
    静态方法不能调用非静态属性 。不能使用self::调用非静态属性。*/
登入後複製

關於PHP靜態方法呼叫和實例化類別呼叫的區別

 

总结: 
类》访问->静态方法(类的方法)->可以 
类》访问->普通方法(对象的方法)->不可以(虽然方法里不用$this关键字时,可以!但不支持这种写法)
对象》访问》静态方法(类的方法)->可以 
对象》访问》普通方法(对象的方法)->可以
相关推荐:
登入後複製
<a href="//m.sbmmt.com/php-weizijiaocheng-391759.html" target="_self">PHP调用京东联盟开普勒、宙斯API模板</a><br/><br/>             
登入後複製

以上是關於PHP靜態方法呼叫和實例化類別呼叫的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板