亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從PHP中的空值創建默認對象?

從PHP中的空值創建默認對象?

PHP
慕桂英546537 2019-06-24 16:26:52
從PHP中的空值創建默認對象?只有在將PHP環境升級到PHP5.4及更高版本之后,我才會看到此錯誤。錯誤指向這一行代碼:錯誤:從空值創建默認對象代碼:$res->success = false;我首先需要聲明我的$res反對?
查看完整描述

3 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

你的新環境E_STRICT警告啟用error_reporting對于PHP版本<=5.3.x,或者只是擁有error_reporting至少設置為E_WARNING使用PHP版本>=5.4。當$resNULL或尚未初始化:

$res = NULL;$res->success = false; // Warning: Creating default object from empty value

如果$res已初始化為某些值,但不是對象:

$res = 33;$res->success = false; // Warning: Attempt to assign property of non-object

為了遵守E_STRICTPHP 5.4之前的標準,或正常的E_WARNINGPHP>=5.4中的錯誤級別,假設您試圖創建一個泛型對象并分配屬性success,您需要聲明$res作為.的對象stdClass在全局命名空間中:

$res = new \stdClass();$res->success = false;


查看完整回答
反對 回復 2019-06-24
?
牧羊人nacy

TA貢獻1862條經驗 獲得超7個贊

這個信息E_STRICT對于PHP<=5.3。自從PHP5.4以來,它被不幸地更改為E_WARNING..自E_WARNING消息是有用的,您不想完全禁用它們。

要消除此警告,必須使用以下代碼:

if (!isset($res)) 
    $res = new stdClass();$res->success = false;

這是完全等效替換..它確保PHP正在默默地做同樣的事情-不幸的是,現在有了警告-隱式對象創建。您應該始終檢查對象是否已經存在,除非絕對確定它不存在。Michael提供的代碼一般都不太好,因為在某些情況下,對象有時可能已經在代碼中的同一位置定義,這取決于環境。


查看完整回答
反對 回復 2019-06-24
?
呼如林

TA貢獻1798條經驗 獲得超3個贊

很簡單,

    $res = (object)array("success"=>false); // $res->success = bool(false);

    $res = (object)array(); // object(stdClass)

    $res = new stdClass();  // old method

    $res->success = !!0;    // bool(false)

    $res->success = false;  // bool(false)

    $res->success = (bool)0; // bool(false)


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 937 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號