php kurucular

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

ve sonra bazı yapıcı kod var ...

Ben boş bir değişken geçirirseniz sınıf başlatılamadı için ne yapmak ister miydiniz

$classinstance = new myClass(); I want $classinstance to be empty (or false)

Ben bu gibi benzer bir sonuca ulaşmak için kolay bir yolu nedir mümkün olmadığını düşünüyorum?

3 Cevap

Sen özel Normal kurucu yapabilir (yani nesnenin dışından kullanılamaz, size bir Singleton yapıyor olsaydı gibi) ve Factory Method oluşturun.

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);
        }
    }
}

Sonra böyle bir sınıf örneğini olacaktır:

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

(EDIT: şimdi sadece PHP5 desteklemeye çalışıyoruz varsayarak)

Sen nesne oluşturmak için bir fabrika yöntemini kullanabilirsiniz:

private function __construct($input = null) {
}

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

Ben doğru olduğuna inanıyorum. Yeni nesnenin print_r bir nesne döndürür gösterecektir.

Bunu bir istisna yapabilir, ama bu istediğiniz tarzı olması muhtemel bulunuyor.

Fabrika yöntemleri +1 zaten yayınlanmıştır. Bu fabrika yöntemleri gibi de olabilir:

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

Ben :-) Fabrika yöntemleri gibi