亚洲av无码乱码国产一区二区,午夜理论片yy44880影院,午夜久久久久久禁播电影,熟睡人妻被讨厌的公侵犯

17
2024/05

PHP調(diào)用類里面的方法的時候報錯Using $this when not in object context是什么原因

發(fā)布時間:2024-05-17 13:46:03
發(fā)布者:已經(jīng)寫了
瀏覽量:
0

最近在開發(fā)新的建站系統(tǒng)的時候,使用PHP寫代碼的時候報錯Using $this when not in object context是什么原因呢,大概的解釋一下就是$this在靜態(tài)方法中使用了,聽起來似懂非懂的樣子,下面就稍微詳細的解釋一下原因,和處理方式吧。

首先介紹一下靜態(tài)方法和非靜態(tài)方法的區(qū)別和使用方式:

1、實例化要求:

    非靜態(tài)方法:必須先實例化,然后通過該實例來調(diào)用非靜態(tài)方法。

    靜態(tài)方法:不需要創(chuàng)建類的實例,可以直接通過類名來調(diào)用靜態(tài)方法。

2、$this 關(guān)鍵字

    非靜態(tài)方法:可以使用 $this 關(guān)鍵字來引用當前對象實例,訪問其屬性和調(diào)用其方法。

    靜態(tài)方法:不能使用 $this 關(guān)鍵字,因為靜態(tài)方法不與任何特定的對象實例關(guān)聯(lián)。(這就是報錯的真實原因)

3、繼承與覆蓋:

    非靜態(tài)方法:子類可以覆蓋父類的非靜態(tài)方法。當通過子類實例調(diào)用被覆蓋的方法時,將執(zhí)行子類中的方法(多態(tài)性)。

    靜態(tài)方法:子類也可以覆蓋父類的靜態(tài)方法,但行為略有不同。通過子類名調(diào)用靜態(tài)方法將執(zhí)行子類中的方法,但通過父類名調(diào)用將仍然執(zhí)行父類中的方法(除非在子類中使用 parent:: 顯式調(diào)用父類的靜態(tài)方法)。

在稍微細講一下實例化調(diào)用:

1、實例化調(diào)用與靜態(tài)調(diào)用:

image

2、訪問屬性:

    實例化對象可以訪問和修改其非靜態(tài)屬性(包括私有、受保護和公共屬性)。

    靜態(tài)方法不能直接訪問非靜態(tài)屬性,因為它們與任何特定的對象實例都不關(guān)聯(lián)。但是,它們可以訪問靜態(tài)屬性。

3、$this:

    在非靜態(tài)方法中,你可以使用 $this 關(guān)鍵字來引用當前對象實例。

    靜態(tài)方法中不能使用 $this 關(guān)鍵字,因為它們不與任何特定的對象實例關(guān)聯(lián)。

4、繼承

    如果子類覆蓋了父類的非靜態(tài)方法,那么當你通過子類實例調(diào)用該方法時,將執(zhí)行子類中的方法(多態(tài)性)。

    如果子類覆蓋了父類的靜態(tài)方法,那么通過子類名調(diào)用該方法將執(zhí)行子類中的方法,但通過父類名調(diào)用將仍然執(zhí)行父類中的方法。

結(jié)論:報錯Using $this when not in object context 的兩種解決方式

1、先實例化,在調(diào)用方法

2、修改類中的$this調(diào)用改為self::調(diào)用

關(guān)鍵詞:
返回列表