从PHP中的空值创建默认对象?

从PHP中的空值创建默认对象?

只有在将PHP环境升级到PHP5.4及更高版本之后,我才会看到此错误。错误指向这一行代码:

错误:

从空值创建默认对象

代码:

$res->success = false;

我首先需要声明我的$res反对?


慕桂英546537
浏览 916回答 3
3回答

繁星淼淼

你的新环境E_STRICT警告启用error_reporting对于PHP版本<=5.3.x,或者只是拥有error_reporting至少设置为E_WARNING使用PHP版本>=5.4。当$res是NULL或尚未初始化:$res&nbsp;=&nbsp;NULL;$res->success&nbsp;=&nbsp;false;&nbsp;//&nbsp;Warning:&nbsp;Creating&nbsp;default&nbsp;object&nbsp;from&nbsp;empty&nbsp;value如果$res已初始化为某些值,但不是对象:$res&nbsp;=&nbsp;33;$res->success&nbsp;=&nbsp;false;&nbsp;//&nbsp;Warning:&nbsp;Attempt&nbsp;to&nbsp;assign&nbsp;property&nbsp;of&nbsp;non-object为了遵守E_STRICTPHP 5.4之前的标准,或正常的E_WARNINGPHP>=5.4中的错误级别,假设您试图创建一个泛型对象并分配属性success,您需要声明$res作为.的对象stdClass在全局命名空间中:$res&nbsp;=&nbsp;new&nbsp;\stdClass();$res->success&nbsp;=&nbsp;false;

牧羊人nacy

这个信息E_STRICT对于PHP<=5.3。自从PHP5.4以来,它被不幸地更改为E_WARNING..自E_WARNING消息是有用的,您不想完全禁用它们。要消除此警告,必须使用以下代码:if&nbsp;(!isset($res))&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;$res&nbsp;=&nbsp;new&nbsp;stdClass();$res->success&nbsp;=&nbsp;false;这是完全等效替换..它确保PHP正在默默地做同样的事情-不幸的是,现在有了警告-隐式对象创建。您应该始终检查对象是否已经存在,除非绝对确定它不存在。Michael提供的代码一般都不太好,因为在某些情况下,对象有时可能已经在代码中的同一位置定义,这取决于环境。

呼如林

很简单,&nbsp;&nbsp;&nbsp;&nbsp;$res&nbsp;=&nbsp;(object)array("success"=>false);&nbsp;//&nbsp;$res->success&nbsp;=&nbsp;bool(false);或&nbsp;&nbsp;&nbsp;&nbsp;$res&nbsp;=&nbsp;(object)array();&nbsp;//&nbsp;object(stdClass) &nbsp;&nbsp;&nbsp;&nbsp;$res&nbsp;=&nbsp;new&nbsp;stdClass();&nbsp;&nbsp;//&nbsp;old&nbsp;method和&nbsp;&nbsp;&nbsp;&nbsp;$res->success&nbsp;=&nbsp;!!0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;bool(false) &nbsp;&nbsp;&nbsp;&nbsp;$res->success&nbsp;=&nbsp;false;&nbsp;&nbsp;//&nbsp;bool(false) &nbsp;&nbsp;&nbsp;&nbsp;$res->success&nbsp;=&nbsp;(bool)0;&nbsp;//&nbsp;bool(false)
打开App,查看更多内容
随时随地看视频慕课网APP