【问题标题】:So what really happens when we use 'new' in PHP那么当我们在 PHP 中使用 'new' 时会发生什么
【发布时间】:2011-03-22 13:17:32
【问题描述】:

那么当有人在 PHP 中说“新”时会发生什么

我相信在 C/Java 中,当调用 new 时,会为对象所需的每个实例变量分配内存? (如果我错了,请纠正我)

PHP也是这样吗?

【问题讨论】:

标签: php new-operator


【解决方案1】:

当你使用$var = new Class

  • 一个新对象被创建(内存分配和初始化);
  • 如果有的话,它的构造函数会被调用;
  • 对象被放入对象列表中并被赋予一个唯一的ID;
  • 一个新的 zval 容器1 被创建,这个容器存储了对象的id等;
  • 变量$var与这个创建的zval容器相关联。


1Definition of what's a zval container.

【讨论】:

    【解决方案2】:

    最简单的方法是使用memory_get_usage()自己检查它

    echo memory_get_usage();
    $obj1 = new obj1;
    $obj2 = new obj2;
    $obj3 = new obj3;
    echo memory_get_usage();
    

    PHP 也是如此。

    【讨论】:

      【解决方案3】:

      当你在 PHP 中说 new 时,PHP 假定你想调用 new Class: PHP Classes Basics

      【讨论】:

        猜你喜欢
        • 2011-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        • 1970-01-01
        相关资源
        最近更新 更多