您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關php中靜態調用和實例化調用的區別是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
不同點有:1、靜態方法在程序開始時生成內存,實例方法在程序運行中生成內存;2、靜態方法可以直接調用,實例方法要先成生實例,通過實例調用方法;3、靜態的內存是連續的,實例申請的是離散的空間,所以沒有靜態方法快,靜態內存是有限制的。
靜態方法只有一個,無論你調用多少次,都是共用的,是沒有對象的概念,因此不能在靜態方法里面使用$this調用,如果非得調用的話,只能實例化自身類
實例化不一樣,每一個實例化是一個對象,擁有多個。
下面用一個實例來了解一下
<?php Error_reporting(E_ALL|E_STRICT); class A{ public function bar(){ echo 'bar'.PHP_EOL; } public static function foo(){ echo 'foo'.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 class A{ public $name = 'kangbazi'; public function bar(){ echo 'bar'.PHP_EOL; } public static function foo(){ echo self::$name.PHP_EOL;//報錯 } } A::foo(); /* 靜態方法不能調用非靜態屬性 。不能使用self::調用非靜態屬性。 */
做一個小總結:
最大的區別在于內存。
靜態方法在程序開始時生成內存,實例方法在程序運行中生成內存,
所以靜態方法可以直接調用,實例方法要先成生實例,通過實例調用方法,靜態速度很快,但是多了會占內存。
任何語言都是對內存和磁盤的操作,至于是否面向對象,只是軟件層的問題,底層都是一樣的,只是實現方法不同。
靜態內存是連續的,因為是在程序開始時就生成了,而實例申請的是離散的空間,所以當然沒有靜態方法快,
而且靜態內存是有限制的,太多了程序會啟動不了。
關于php中靜態調用和實例化調用的區別是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。