php 类 静态调用 实例化 效率,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教程》
總結
以上是生活随笔為你收集整理的php 类 静态调用 实例化 效率,php类的静态调用和实例化调用有哪些不同点?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找出最大和第二大的数PHP,2020-0
- 下一篇: python的clock函数,Pytho