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