只有在将PHP环境升级到PHP 5.4或更高版本后,我才看到这个错误。错误指向这行代码:
错误:
从空值创建默认对象
代码:
$res->success = false;
我首先需要声明我的$res对象吗?
只有在将PHP环境升级到PHP 5.4或更高版本后,我才看到这个错误。错误指向这行代码:
错误:
从空值创建默认对象
代码:
$res->success = false;
我首先需要声明我的$res对象吗?
当前回答
得到这个错误的一个简单方法是输入下面的(A),意思是输入(b)
(一)$ this - > - >变量
(b) $ this - > my_variable
微不足道,但很容易被忽视,如果你不去寻找,就很难发现。
其他回答
得到这个错误的一个简单方法是输入下面的(A),意思是输入(b)
(一)$ this - > - >变量
(b) $ this - > my_variable
微不足道,但很容易被忽视,如果你不去寻找,就很难发现。
此问题是由于您正在分配一个未初始化的对象实例而引起的。如:
你的情况:
$user->email = 'exy@gmail.com';
解决方案:
$user = new User;
$user->email = 'exy@gmail.com';
首先你认为你应该创建对象 $res = new \stdClass(); 然后给object赋值为key和value $res->success = false;
对于PHP <= 5.3,这个消息是E_STRICT。从PHP 5.4开始,它不幸地被更改为E_WARNING。因为E_WARNING消息很有用,所以您不希望完全禁用它们。
要消除此警告,必须使用以下代码:
if (!isset($res))
$res = new stdClass();
$res->success = false;
这是完全等价替换。它保证了与PHP所做的完全相同的事情——不幸的是现在有警告——隐式对象创建。您应该始终检查对象是否已经存在,除非您绝对确定它不存在。Michael提供的代码一般来说并不好,因为在某些上下文中,对象有时可能已经在代码中的相同位置定义了,这取决于具体情况。
我也有类似的问题,这似乎解决了问题。你只需要将$res对象初始化为一个类。假设这里的类名是test。
class test
{
//You can keep the class empty or declare your success variable here
}
$res = new test();
$res->success = false;