您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“php中靜態(tài)方法怎么訪問非靜態(tài)方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“php中靜態(tài)方法怎么訪問非靜態(tài)方法”吧!
PHP中靜態(tài)方法可以訪問非靜態(tài)方法;可以先實例化對象,然后再調(diào)用對象中的非靜態(tài)方法即可,靜態(tài)調(diào)用非靜態(tài)方法是可以的,但是靜態(tài)調(diào)用構(gòu)造方法是不可以的。
本文操作環(huán)境:Windows10系統(tǒng)、PHP7.1版、Dell G3電腦。
如果我們調(diào)用了非靜態(tài)方法會怎么樣呢?首先做測試。
<?php class test{ function test() { echo 'it works'; } } test::test(); ?>
執(zhí)行以下,返回錯誤如下:
Fatal error: Non-static method test::test() cannot be called statically in /home/×××/test.php on line 7 Call Stack: 0.0002 332548 1. {main}() /home/×××/test.php:0
這個時候,可能大家就會認為靜態(tài)調(diào)用非靜態(tài)方法是行不通的了,但其實,結(jié)論下的過早了,因為test()這個方法比較特殊,與類同名,是構(gòu)造方法。 我們繼續(xù)測試。
<?php class test { function test() { echo 'it works'; } function test2() { echo 'it works too'; } } test::test2(); ?>
執(zhí)行結(jié)果:
it works too
這說明,靜態(tài)調(diào)用非靜態(tài)方法是可行的,但是靜態(tài)調(diào)用構(gòu)造方法是不可以的。為了驗證這個結(jié)論,我又做了如下測試:
<?php class test{ static function test() { echo 'it works'; } } test::test(); ?>
執(zhí)行的結(jié)果如下:
Fatal error: Constructor test::test() cannot be static in /home/xxx/test.php on line 9
構(gòu)造方法不能聲明靜態(tài),所以上面的推論正確。
但這個結(jié)果的確是很特殊的,因為可能只有PHP可以靜態(tài)調(diào)用非靜態(tài)方法,我用Java做了實驗,如果靜態(tài)調(diào)用非靜態(tài)方法會報如下錯誤:
Cannot make a static reference to the non-static method showString() from the type HelloWorldApp
到此,相信大家對“php中靜態(tài)方法怎么訪問非靜態(tài)方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。