溫馨提示×

溫馨提示×

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

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

php中靜態(tài)方法怎么訪問非靜態(tài)方法

發(fā)布時間:2022-03-22 17:02:42 來源:億速云 閱讀:211 作者:iii 欄目:編程語言

本篇內(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電腦。

php中靜態(tài)方法可以訪問非靜態(tài)方法嗎

如果我們調(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í)!

向AI問一下細節(jié)

免責聲明:本站發(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)容。

php
AI