php - 破坏构造函数

标签 php oop

有没有一种方法可以防止在其构造函数中创建对象,以便:

$object = new Foo();
echo $object; // outputs: NULL

最佳答案

不,不可能; new 关键字总是 返回指定类的实例,无论您试图从构造函数返回什么。这是因为在调用构造函数时,PHP 已经完成为新对象分配内存。换句话说,该对象在此时已经存在(否则,根本没有可调用构造函数的对象)。

您可以改为从构造函数引发错误或抛出异常,并相应地进行处理。

class Foo {
    public function __construct() {
        throw new Exception('Could not finish constructing');
    }
}

try {
    $object = new Foo();
} catch (Exception $e) {
    echo $e->getMessage();
}

关于php - 破坏构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4803866/

相关文章:

java - 为什么我们不能在Java中实例化一个抽象类?

php和oracle OCI查询

php - $this->load->library ('form_helper' ) 等同于 C++?

performance - 使用静态方法与实例化包含方法的类的性能

php - 获取相关项目并将其输出为链接

javascript - 为什么在外部源文件中声明时会加载对象文字,但在包含外部 javascript 文件的文件中调用时却不会加载

oop - 实现接口(interface)的类叫什么?

javascript - Angularjs 中的自定义过滤器不起作用

php - 如何在数据库中搜索字符串 X 次? (MySQL + PHP)

php - Centos Cronjob 中的 Cakephp ShellDispatcher 错误