public function __construct($input = null) {
if (empty($input)){
return false;
}
,然后有一些构造函数代码...PHP构造
什么,我想要做的是,如果我传递一个空的变量
$ = ClassInstance的新MyClass的类别不初始化( ); 我想$ classinstance是空的(或false)
我认为这是不可能的这样,什么是一种简单的方法来实现类似的结果?
public function __construct($input = null) {
if (empty($input)){
return false;
}
,然后有一些构造函数代码...PHP构造
什么,我想要做的是,如果我传递一个空的变量
$ = ClassInstance的新MyClass的类别不初始化( ); 我想$ classinstance是空的(或false)
我认为这是不可能的这样,什么是一种简单的方法来实现类似的结果?
你可以使私有的正常构造函数(所以它不能从对象外部使用,就像你制作一个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)
你可以使用一个工厂方法来创建对象:
private function __construct($input = null) {
}
public static function create($input = null) {
if (empty($input)) {
return false;
}
return new MyObject($input);
}
我相信你是正确的。新对象的print_r将显示它返回一个对象。
你可以让它抛出一个异常,但这不可能是你想要的风格。
已发布工厂方法+1。这些工厂方法也可能是这样:
public static function newCreate($a) { return (!$a) ? false : new foo($a); }
我喜欢工厂方法:-)
良好的补充说明。 – jheddings 2009-10-29 23:08:33
赞成赞成:) – philfreo 2009-10-29 23:15:59
我仍然需要__construct? – Daniel 2009-10-29 23:33:44