PHP OOP Tasarım Desenleri: Ben kayıt ve form doğrulama için iki ayrı sınıflar oluşturma?

4 Cevap php

Yani burada benim sorunum: Ben kayıt, kayıt A ve B tescil iki tip var, her aynı alanlara ve bazı farklı alanlarda bazı olacaktır. Ben soyut sınıf kaydı oluşturmak için gittiğini ve A ve B hem kayıt uzanan kendi sınıfları olurdu. Ben uzatmak ayrı A ve B doğrulama sınıfları ile ayrı Doğrulama sınıf oluşturmak gerekir, benim soru nedir? ya da bunun gibi bir şey kullanmak için daha iyi bir model var mı?

Teşekkürler

4 Cevap

Evet ayrı varlıklar olarak Kayıt ve Doğrulama alacaktı.

Edit: Ayrıca, this SO question sizin için bazı değerli bilgiler içerebilir.

Evet, muhtemelen ayrı kayıt ve doğrulama varlıkları istiyorum. Işe yarayacağını uzanan soyut bir taban ve bir ValidationA ve ValidationB ile önerilen desen. Eğer gerçekten bir "default" doğrulama yoksa, sadece bir arayüz doğrulama yapmak ve bunu uygulamak o ValidatingA ve ValidatingB var, ve sonra uygun Validate yöntemi çağırmak için zamanı biçimlilik kullanmak mümkün olurdu,.

Ben fark etmeye başladık Bir şey sormak ve sormak ve tartışmak ve bir şey istediğiniz tüm bu tür aşırı yoruyor, ama bunu denemek kadar biliyorsun asla olabilir. Hızlı bir soyut temel sınıf ve bunu uzatmak iki kırbaç ve ne istediğinizi gerçekleştirir olmadığını görmek. Aksi takdirde, sadece refactor. Tabii vb teknik borç, göz önünde bulundurmanız gerekir, ama sadece bunu denemek - Bunu öğrenmek için en iyi yoldur.

Bir yöntem 'isValid ()' ile bir Validator soyut sınıf oluşturmak ve ihtiyaca uzatmak.

Bir yöntem validate ile bir sınıf oluşturma Kayıt () geçmesine Validator nesnesi alarak.

Bu yazdığın herhangi validator şey doğrulamak için izin verirsiniz.

Her alan türü (e-posta, telefon, giriş, parola) için kendi Validator / ShowField sınıf oluşturabilirsiniz. Bunu sadece bir kez yapmak. Sonra (gerekirse vb doğrulama mesajlarını gösteren bir form gösteren alanları doğrulayarak) formu ile tüm standart "kirli" işlerini taşırken, bir Form sınıfı oluşturabilirsiniz

Kullanım örneği:

$form = new Form($action, $method); // $action and $method - html attributes of the form
$form->addField('Your e-mail', 'mail'); // field label (for the form) and field type (for the form and for validation)
$form->addField('Login', 'login');

$form->process(); // show form to the user or process it if already submited and sent

Avantajları:

  1. Bir kez alan doğrulayıcılar oluşturun.
  2. Sen Form sınıfı olacak tüm form işleme kez oluşturun.
  3. Tüm yapmanız gereken, aşağıda gösterildiği gibi form alanları tanımlamaktır.