第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP致命錯誤:在沒有對象上下文時使用$this

PHP致命錯誤:在沒有對象上下文時使用$this

PHP
森林海 2019-06-25 15:05:39
PHP致命錯誤:在沒有對象上下文時使用$this我有個問題:我正在編寫一個沒有框架的新網(wǎng)絡(luò)應(yīng)用程序。在我的index.php我用的是:require_once('load.php');和在load.php我在用require_once('class.php');加載我的class.php.在我的class.php我有個錯誤:致命錯誤:在class.php中未在對象上下文中在線使用$this.(在本例中為11)舉個例子class.php是這樣寫的:class foobar {     public $foo;     public function __construct() {         global $foo;         $this->foo = $foo;     }     public function foobarfunc() {         return $this->foo();     }     public function foo() {         return $this->foo;     }}在我的index.php我可能在裝貨foobarfunc()就像這樣:foobar::foobarfunc();但也可以$foobar = new foobar;$foobar->foobarfunc();為什么會出現(xiàn)錯誤?
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

您正在調(diào)用一個非靜態(tài)方法:

public function foobarfunc() {
    return $this->foo();}

使用靜態(tài)調(diào)用:

foobar::foobarfunc();

使用靜態(tài)調(diào)用時,將調(diào)用該函數(shù)。(即使沒有宣布為static),但是,由于沒有對象的實例,所以沒有$this.

因此:

  • 不應(yīng)對非靜態(tài)方法使用靜態(tài)調(diào)用。
  • 靜態(tài)方法(或靜態(tài)調(diào)用的方法)不能使用$this,它通常指向類的當(dāng)前實例,因為在使用靜態(tài)調(diào)用時沒有類實例。


在這里,類的方法使用類的當(dāng)前實例,因為它們需要訪問$foo類的屬性。

這意味著您的方法需要類的實例-這意味著它們不能是靜態(tài)的。

這意味著不應(yīng)該使用靜態(tài)調(diào)用:應(yīng)該實例化類,并使用對象調(diào)用方法,就像在代碼的最后一部分中所做的那樣:

$foobar = new foobar();$foobar->foobarfunc();


欲了解更多信息,請參閱PHP手冊中的內(nèi)容:


還請注意,您可能不需要在您的__construct方法:

global $foo;

使用global關(guān)鍵詞會使$foo變量,在所有函數(shù)和類的外部聲明,從該方法中提取.而且你可能沒有$foo變量。

訪問$foo 類屬性,您只需使用$this->foo就像你一樣。


查看完整回答
反對 回復(fù) 2019-06-25
?
大話西游666

TA貢獻1817條經(jīng)驗 獲得超14個贊

如果您正在調(diào)用foobarfunc帶著分辨范圍算子 (::),那你就叫它靜態(tài),例如在類級別而不是實例級別上,因此使用$this不在對象上下文中時$this在類上下文中不存在。

如果您啟用E_STRICT,PHP將在以下方面引起注意:

Strict Standards: Non-static method foobar::foobarfunc() should not be called statically

代之而行

$fb = new foobar;echo $fb->foobarfunc();

在一個側(cè)面,我建議不要用global在你的教室里。如果您需要類內(nèi)的外部內(nèi)容,請通過構(gòu)造函數(shù)傳遞它。這叫做依賴注入它將使您的代碼更易于維護,更不依賴于外部事物。


查看完整回答
反對 回復(fù) 2019-06-25
  • 3 回答
  • 0 關(guān)注
  • 525 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號