java 对象 php对象_如何在PHP中定义一个空对象

本文探讨了如何在PHP中使用stdClass对象动态添加属性,同时介绍了自定义基础对象类o()的方法,以及如何通过类似数组的方式访问对象数据。作者强调了使用o()类和 stdClass 的优势,以及其在编程中的灵活性。
摘要由CSDN通过智能技术生成

用一个新的数组,我这样做:

$aVal = array();

$aVal[key1][var1] = "something";

$aVal[key1][var2] = "something else";

对象有类似的语法吗

(object)$oVal = "";

$oVal->key1->var1 = "something";

$oVal->key1->var2 = "something else";

#1楼

$x = new stdClass();

手册中的注释总结起来最好:

stdClass是默认的PHP对象。 stdClass没有属性,方法或父级。 它不支持魔术方法,并且不实现任何接口。

当将标量或数组转换为Object时,将获得stdClass的实例。 只要需要通用对象实例,就可以使用stdClass。

#2楼

您有一个糟糕但有用的技术:

$var = json_decode(json_encode([]), FALSE);

#3楼

正如其他人指出的那样,您可以使用stdClass。 但是我认为没有()会更干净,就像这样:

$obj = new stdClass;

但是基于这个问题,看来您真正想要的是能够动态地向对象添加属性。 尽管可以,但您不需要为此使用stdClass。 确实可以使用任何类。 只需创建任何类的对象实例并开始设置属性即可。 我喜欢创建自己的类,其名称仅为o,并提供一些我在这些情况下喜欢使用的基本扩展功能,并且非常适合从其他类进行扩展。 基本上,这是我自己的基础对象类。 我也喜欢简单地命名为o()的函数。 像这样:

class o {

// some custom shared magic, constructor, properties, or methods here

}

function o() {

return new o;

}

如果您不希望拥有自己的基础对象类型,则只需让o()返回新的stdClass。 一个优点是,与将stdClass用作类名,函数名或两者都使用相比,o比stdClass更容易记住并且更短。 即使您的o类中没有任何代码,也要比笨拙的大写stdClass(可能会引用“性传播疾病类”的想法)记忆起来容易。 如果自定义o类,则可能会发现o()函数的用法而不是构造函数的语法。 这是一个正常的函数,它返回一个值,该值比构造方法的限制要少。 例如,函数名称可以作为字符串传递给接受可调用参数的函数。 一个函数还支持链接。 因此,您可以执行以下操作:$ result = o($ internal_value)-> some_operation_or_conversion_on_this_value();

这是基础“语言”构建其他语言层(顶层以完全内部DSL编写)的一个很好的开始。 这类似于lisp的开发风格,PHP对其的支持比大多数人意识到的要好。 我意识到这个问题有点切线,但是这个问题触及到我认为是充分利用PHP功能的基础。

#4楼

除了zombat的答案,如果您一直忘记stdClass

function object(){

return new stdClass();

}

现在您可以执行以下操作:

$str='';

$array=array();

$object=object();

#5楼

要以类似方式访问stdClass中的数据,您只需使用{$ var}语法即可对关联数组进行操作。

$myObj = new stdClass;

$myObj->Prop1 = "Something";

$myObj->Prop2 = "Something else";

// then to acces it directly

echo $myObj->{'Prop1'};

echo $myObj->{'Prop2'};

// or what you may want

echo $myObj->{$myStringVar};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值