在 PHP 中从空值创建默认对象
我们将介绍一些在 PHP 中创建对象的方法,以及解决 creating default object from empty value
错误的一些方法。
在 PHP 中创建一个 stdClass()
对象
当我们尝试在不初始化对象的情况下分配对象的属性时,将抛出错误。错误会说从空值创建默认对象
。该错误还取决于 php.ini
文件中的配置。当错误在配置中被抑制时,这样的脚本就不会抛出错误。改配置文件来抑制错误来摆脱它不是更好。相反,我们可以创建一个 stdClass()
对象来消除错误。当我们在全局命名空间中将变量声明为 stdClass()
的对象时,我们可以动态地为这些对象分配属性。
例如,创建一个变量 $obj
并将其设置为 NULL
。然后,使用 $obj
对象将 success
属性设置为 false
。在这种情况下,将抛出错误,如输出部分所示。这是因为 $obj
还没有被初始化为一个对象。
示例代码:
$obj = NULL;
$obj->success = true;
输出:
Warning: Creating default object from empty value
要消除错误,首先,将 $obj
变量分配给 stdClass()
的实例。接下来,使用 $obj
将 success
属性设置为 true
。然后,使用 print_r()
函数打印 $obj
对象。最好使用 isset()
函数来检查 $obj
是否已经存在。我们可以在输出部分看到有关 $obj
的信息。因此,我们可以通过创建 stdClass()
的对象来消除错误。
示例代码:
$obj = new stdClass();
$obj->success =true;
print_r($obj);
输出:
stdClass Object ( [success] => 1 )
在 PHP 中将数组类型转换为对象
我们可以在数组之前使用 object
关键字将数组类型转换为对象。这样就可以创建对象了。然后,我们可以将属性分配给对象。由于我们已经初始化了对象,因此在分配对象的属性时不会抛出错误。此方法还创建 stdClass()
类的对象。
例如,创建一个变量 $obj
并将其分配给 array()
函数。然后,在 array()
之前的括号中写入 object
关键字。数组已转换为对象。然后,使用 $obj
将 true
值分配给 success
属性。最后,使用 print_r()
函数打印对象。通过这种方式,我们可以创建一个类型转换数组的对象并摆脱错误。
示例代码:
$obj = (object)array();
$obj->success =true;
print_r($obj);
输出:
stdClass Object ( [success] => 1 )
在 PHP 中从匿名类创建对象
我们可以从 PHP 中的匿名类创建一个对象并为其分配属性。我们可以使用 new class
关键字来创建一个匿名类。我们可以像在泛型类中一样设置属性的值。由于属性将有一个类,并且我们可以使用对象访问它,因此不会抛出错误。
例如,创建一个对象 $obj
使用 new class
关键字为该对象分配一个匿名类。然后创建一个 public
属性 $success
并将值设置为 true
。在类之外,使用 print_r()
函数打印对象。通过这种方式,我们可以从 PHP 中的匿名类创建一个对象并防止错误。
示例代码:
$obj = new class {
public $success = true;
};
print_r($obj);
输出:
class@anonymous Object ( [success] => 1 )
Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.
LinkedIn