【问题标题】:In Php what happens when an object fails to be instantiated?在 PHP 中,当一个对象实例化失败时会发生什么?
【发布时间】:2012-09-28 14:44:45
【问题描述】:
$someClass sc=new SomeClass();

我想知道的是,如果构造函数由于某种原因失败(比如可能没有足够的内存),变量 sc 中的内容。我找不到直接的答案?

【问题讨论】:

  • 没什么,整个脚本都会失败。另请注意,这不是您在 PHP 中声明变量的方式。

标签: php class object instantiation


【解决方案1】:

在您的内存问题示例中,您遇到致命错误并且 php 停止执行。你永远不会得到变量 $sc 的赋值。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

    • 请注意 try...catch 不会捕获致命错误,除非您使用 PHP 7 并捕获 Throwable 类型的错误。
    【解决方案3】:

    首先,对象初始化的语法不正确,必须是$sc = new SomeClass(); 并且会出现内存耗尽错误,并且不会创建变量$sc

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-26
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 1970-01-01
        • 2016-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多