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