public function __construct($input = null) {
if (empty($input)){
return false;
}
然后有一些构造函数代码......
我想要做的是如果我传递一个空变量
,则该类不会初始化$ classinstance = new myClass(); 我希望$ classinstance为空(或错误)
我认为这不可能是这样,实现类似结果的简单方法是什么?
答案 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 ); }
我喜欢工厂方法: - )