Kötü girişi ile başlatılırken sınıf kullanılamaz hale getirir ama nesne hala mevcut olduğunu

0 Cevap php

Ben bir ürün kimliği ya da ancak giriş nasıl zarif böyle bir durumda yönetebilirsiniz kötü bir şey gibi bazı bilgiler ihtiyacı yeni bir nesne oluşturmak istiyorsanız?

class Product
{
function __construct($id)
    {
    if(is_invalid_id($id))
        { return false; }
    }
}

Ben bu şekilde başlatılamıyor (return Yapıcı içinde hiçbir şey geri dönmez beri) ben hala bir nesne olsun. Başka bir yol Ben o yakalamak istisnaları kullanmak olacaktır ama bu tür unelegant bulunuyor. 3.Seçenek sonra girişini kontrol eder ve sonra nesneyi döndüren statik bir işlevi kullanmak için.

class Product
{
static function init($id)
    {
    if(is_invalid_id($id))
        { return false; }
    return new self($id);
    }

private function __construct($id)
    {
    $this->id = $id;
    }
}

$product = Product::init($productId);

Ben sınıfını genişletmek çalıştığınızda burada sorunudur. Ben (bu aynı kod olsa bile) ben uzatmak her sınıf için init() yöntem veya return new self() her zaman üst sınıf bir örneğini döndürür oluşturmak zorunda ya.

0 Cevap