【问题标题】:Simple Objects in PHP question [newbie]PHP 中的简单对象问题 [新手]
【发布时间】:2011-05-19 01:31:20
【问题描述】:

我知道你可以像这样创建一个数组:

$a = array();

并将新的名称值对附加到它上面,如下所示:

$a['test'] = 'my new value';

甚至可以省略第一行,尽管这是不好的做法!

我发现对象更易于阅读和理解,所以我所做的是将名称值对数组转换为对象:

$a = (object)$a;

因此我可以访问参数:

$a->test;

从一开始就创建一个数组的额外开销似乎很浪费,是否可以简单地创建一个对象,然后以某种类似的方式向它添加名称值对,就像我做数组一样?

谢谢

【问题讨论】:

    标签: php oop object


    【解决方案1】:

    是的,stdClass 类就是为此而设计的。

    $a = new stdClass;
    $a->test = 'my new value';
    

    您可以将其视为类似于以下 JavaScript 代码:

    var a = {};
    a.test = 'my new value';
    

    事实上,如果您有一些以 JSON 格式接收数据的 PHP 代码,则在数据上运行 json_decode() 会生成一个包含属性的 stdClass 对象。

    【讨论】:

      【解决方案2】:

      您可以为此使用stdClass 对象:

      $a = new stdClass();
      

      【讨论】:

        【解决方案3】:

        即使没有stdclass也很简单。你可以简单地做

        class obj{}
        $obj = new obj;
        $obj->foo = 'bar';
        

        【讨论】:

        • 谢谢 - 我想它可能就这么简单!
        • 呃,你在两个语句之间缺少$obj = new obj;
        • @Thariama:您忘记创建 obj 的实例。 $obj = new obj; 其实这堂课是徒劳的。它是 stdClass 的隐式扩展,没有添加任何内容。因此,它只是运行时类型表中的另一个条目,可能会使开发人员感到困惑。
        • @rik: obj does not extend stdClass,甚至不是隐含的。
        • @rik:如果你考虑两个具有相同成员的单独类语义就好了,但是说所有类都继承自stdClass 是错误的。如果你在代码中这么说,一个类只会从它继承。它不是根类。
        【解决方案4】:

        您可以为此使用 stdClass

        $object = new StdClass;  
        $object->foo = 'bar';
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-30
          • 1970-01-01
          • 2016-08-18
          • 2021-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-01
          相关资源
          最近更新 更多