首页 > 解决方案 > 如何定义一个只有在没有参数传递给构造函数时才能实例化的类?

问题描述

如何定义一个只能实例化不带参数的类,并在任何参数传递给构造函数时禁止实例化?

我的目标是强制执行一组应该是“简单”并用作模板的类。作为其中的一部分,我不希望在实例化期间将任何内容传递给构造函数。

当通过构造函数传递任何内容时,我希望事情失败(运行时错误、致命错误、静态解释器错误检查等)

class Template()
{
    ...
}

new Template(); // okay
new Template($anything); // must not work

标签: phpconstructorparameter-passinginstantiation

解决方案


如果通过了任何内容,只需引发异常:

class Foo {
    public function __construct(...$args) {
        if (count($args) > 0) {
            throw new Exception('No arguments!');
        }
    }
}

推荐阅读