只有在将PHP环境升级到PHP 5.4或更高版本后,我才看到这个错误。错误指向这行代码:
错误:
从空值创建默认对象
代码:
$res->success = false;
我首先需要声明我的$res对象吗?
只有在将PHP环境升级到PHP 5.4或更高版本后,我才看到这个错误。错误指向这行代码:
错误:
从空值创建默认对象
代码:
$res->success = false;
我首先需要声明我的$res对象吗?
当前回答
我在尝试向API返回的对象添加变量时遇到了类似的问题。我用foreach循环遍历数据。
foreach ( $results as $data ) {
$data->direction = 0;
}
这在Laravel中抛出了“从空值创建默认对象”异常。
我用很小的改动就修好了。
foreach ( $results as &$data ) {
$data->direction = 0;
}
通过简单地将$data作为引用。
我希望这能帮助到一些人,因为这让我很烦!
其他回答
试试这个:
ini_set('error_reporting', E_STRICT);
对于PHP <= 5.3,这个消息是E_STRICT。从PHP 5.4开始,它不幸地被更改为E_WARNING。因为E_WARNING消息很有用,所以您不希望完全禁用它们。
要消除此警告,必须使用以下代码:
if (!isset($res))
$res = new stdClass();
$res->success = false;
这是完全等价替换。它保证了与PHP所做的完全相同的事情——不幸的是现在有警告——隐式对象创建。您应该始终检查对象是否已经存在,除非您绝对确定它不存在。Michael提供的代码一般来说并不好,因为在某些上下文中,对象有时可能已经在代码中的相同位置定义了,这取决于具体情况。
在PHP 7中,匿名对象可以这样创建:
$res = new class {
public $success = false;
};
https://www.php.net/manual/en/language.oop5.anonymous.php http://sandbox.onlinephpfunctions.com/code/ab774707a8219c0f35bdba49cc84228b580b52ee
这是我在PHP 7中遇到的一个警告,解决这个问题的简单方法是在使用变量之前初始化它
$myObj=new \stdClass();
一旦你初始化了它,你就可以将它用于对象
$myObj->mesg ="Welcome back - ".$c_user;
首先你认为你应该创建对象 $res = new \stdClass(); 然后给object赋值为key和value $res->success = false;