在Php中,当一个对象无法实例化时会发生什么?

时间:2012-09-28 14:44:46

标签: php class object instantiation

$someClass sc=new SomeClass();

我想知道的是,如果构造函数由于某种原因(例如可能没有足够的内存)而失败,那么变量sc中会出现什么。我找不到答案?

4 个答案:

答案 0 :(得分:3)

以你的内存问题为例,你得到一个致命错误,php停止执行。你永远不会分配变量$ sc。

答案 1 :(得分:2)

构造函数可能会失败主要有两个原因:

  1. 内存不足;对象不是唯一的,这会导致致命错误,并且您的脚本将无法继续。

  2. 抛出exception;除非使用'try-catch'子句捕获异常,否则您的脚本将停止。

  3. try {
        $sc = new SomeClass(); // exception is thrown inside the constructor
    } catch (Exception $e) {
        echo "Yikes, object didn't get created; error = {$e->getMessage()}\n";
    }
    

答案 2 :(得分:0)

首先,对象启动的语法不正确,需要$sc = new SomeClass();并且你会得到内存耗尽错误,并且不会创建变量$sc

答案 3 :(得分:0)

当任何其他类型的代码由于某些原因(例如内存不足等)而失败时会发生同样的事情:PHP运行时发出致命错误,就是这样。对象构造函数并不特殊。