如何在PHP中定义一个空对象
与一个新的阵列我这样做:
$aVal = array();
$aVal[key1][var1] = "something";
$aVal[key1][var2] = "something else";
对象是否有类似的语法?
(object)$oVal = "";
$oVal->key1->var1 = "something";
$oVal->key1->var2 = "something else";
$x = new stdClass();
手册中的评论总结得最好:
stdClass是默认的PHP对象。 stdClass没有属性,方法或父类。 它不支持魔术方法,并且不实现任何接口。
当您将标量或数组转换为Object时,您将获得stdClass的一个实例。 无论何时需要通用对象实例,都可以使用stdClass。
创建“空”对象的标准方法是:
$oVal = new stdClass();
但是,如果PHP> = 5.4,我个人更喜欢使用:
$oVal = (object)[];
它更短,我个人认为它更清晰,因为stdClass可能误导新手程序员(即“嘿,我想要一个对象,而不是一个类!”)。
与PHP <5.4相同的是:
$oVal = (object) array();
(object)[]
相当于new stdClass()
。
查看PHP手册(这里):
stdClass :由类型转换为对象创建。
和这里):
如果一个对象被转换为一个对象,它不会被修改。 如果任何其他类型的值被转换为对象, 则会创建stdClass内置类的新实例 。
但请记住, 空($ oVal)返回false ,因为@PaulP说:
没有属性的对象不再被认为是空的。
关于你的例子,如果你写:
$oVal = new stdClass();
$oVal->key1->var1 = "something"; // PHP creates a Warning here
$oVal->key1->var2 = "something else";
PHP创建以下警告,隐式创建属性key1
(一个对象本身)
警告:从空值创建默认对象
如果您的配置(请参阅错误报告级别)向浏览器显示此警告,则可能会出现问题。 这是另一个完整的主题,但是一种快速而肮脏的方法可能是使用错误控制运算符(@)忽略该警告:
$oVal = new stdClass();
@$oVal->key1->var1 = "something"; // the warning is ignored thanks to @
$oVal->key1->var2 = "something else";
我想指出的是,在PHP中没有像空的对象那样的东西:
$obj = new stdClass();
var_dump(empty($obj)); // bool(false)
但是当然$ obj将是空的。
另一方面,在这两种情况下,空数组意味着空
$arr = array();
var_dump(empty($arr));
来自changelog函数的引用为空
没有属性的对象不再被认为是空的。
链接地址: http://www.djcxy.com/p/23639.html上一篇: How to define an empty object in PHP
下一篇: Quartz scheduler Failed to obtain DB connection from data source