php构造函数

时间:2009-10-29 22:59:22

标签: php constructor

public function __construct($input = null) {
    if (empty($input)){
        return false;
    }

然后有一些构造函数代码......

我想要做的是如果我传递一个空变量

,则该类不会初始化

$ classinstance = new myClass(); 我希望$ classinstance为空(或错误)

我认为这不可能是这样,实现类似结果的简单方法是什么?

3 个答案:

答案 0 :(得分:5)

您可以将普通构造函数设为私有(因此无法在对象外部使用它,就像您创建Singleton时那样)并创建Factory Method

class MyClass {
    private function __construct($input) {
        // do normal stuff here
    }
    public static function factory($input = null) {
        if (empty($input)){
            return null;
        } else {
            return new MyClass($input);
        }
    }
}

然后你将实例化一个这样的类:

$myClass = MyClass::factory($theInput);

(编辑:现在假设你只是试图支持PHP5)

答案 1 :(得分:1)

您可以使用工厂方法创建对象:

private function __construct($input = null) {
}

public static function create($input = null) {
    if (empty($input)) {
        return false;
    }
    return new MyObject($input);
}    

答案 2 :(得分:0)

我相信你是对的。新对象的print_r将显示它返回一个对象。

你可以让它抛出异常,但这不太可能是你想要的风格。

已发布工厂方法的

+1。那些工厂方法也可能是:

public static function newCreate( $a ) { return ( !$a ) ? false : new foo( $a ); }

我喜欢工厂方法: - )