中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php中靜態方法與普通方法的區別是什么

發布時間:2020-08-07 09:27:42 來源:億速云 閱讀:219 作者:Leah 欄目:編程語言

本篇文章為大家展示了php中靜態方法與普通方法的區別是什么,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

php中靜態方法與普通方法的區別是:普通方法需要對象去調用,需要綁定$this,即普通方法必須要有對象,然后讓對象來調用;靜態方法不屬于哪一個對象,因此不需要綁定$this,即不需要對象也可以調用。

普通方法存放類內,只有一份;靜態方法也是存放于類內,只有一份。

區別在于:普通方法需要對象去調用,需要綁定$this,即普通方法,必須要有對象,然后讓對象來調用。而靜態方法,不屬于哪一個對象,因此不需要綁定$this,即不需要對象也可以調用。

舉例分析:

<?php
header('content-type:text/html;charset=utf-8');

class Human{
  static public $head=1;
  public function easyeat(){
    echo '普通方法吃飯<br />';
  }
  static public function eat(){
    echo '靜態方法吃飯<br />';
  }
  public function intro(){
    echo $this->name;
  }
}
Error_reporting(E_ALL|E_STRICT);
//此時沒有對象!方法可以執行
Human::eat();
/*
以下方法easyeat是一個非靜態方法,就由對象來調用,但,用類來調用此方法來也可以執行,而嚴格狀態下,此方法會執行,同時報錯,
Strict Standards: Non-static method Human::easyeat() should not be called statically in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 32

*/
Human::easyeat();
/*
接上,從邏輯來理解,如果用類名靜態調用非靜態(普通)方法
比如:intro()
那么,這個$this是指哪個對象呢??
因此會報錯,因為找不到對象!
Fatal error: Using $this when not in object context in D:\application\PHPnow-1.5.6\htdocs\yan18\types\staticfun.php on line 23
*/
Human::intro();
/*
如上分析,其實,非靜態方法,是不能由類名靜態調用的,但目前,php中的面向對象檢測不夠嚴格,只要靜態方法中沒有$this關鍵字,就會轉化成靜態方法來處理!
*/
$li=new Human();
$li->eat();
?>

上述內容就是php中靜態方法與普通方法的區別是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

泾川县| 历史| 宜昌市| 定州市| 元朗区| 崇义县| 永德县| 天津市| 天祝| 柳河县| 射阳县| 铜鼓县| 留坝县| 安化县| 旬邑县| 奈曼旗| 玉山县| 洛隆县| 阜新市| 福建省| 尼玛县| 罗江县| 红河县| 吉隆县| 石泉县| 城固县| 安宁市| 旬邑县| 武宣县| 芦山县| 高密市| 贡觉县| 扶沟县| 方山县| 历史| 云浮市| 永康市| 苍南县| 新竹县| 防城港市| 吉木萨尔县|