Tekrarlayan ve uzun doğrulama kodları ile ilgili iyi bir yaklaşım nedir?

3 Cevap php

Ben sadece son zamanlarda web programlama başladı ve ben hata mesajları ve geri arama işlevleri sayma değil, hemen hemen hayran bir doğrulama kitaplığı kullanıyorum rağmen, ben hala yalnız doğrulama için kod 20-30 satır olsun oyum. Ben Kohana MVC framework kullanıyorum ve benim doğrulama kodları kısaltabilir herhangi bir yolu olup olmadığını merak ediyordum. Ben aşağıdaki düşünmeye çalıştı

  1. (oldukça benim gibi bir çaylak için vardı) benim modeli doğrulama kodları koyarak.
  2. (, böylece beni kullanıcı kaydı gibi tekrarlayan işlemler için kütüphane aramak için izin, doğrulama sınıfa kanca şey düzenleme ve malzeme) girişleri doğrulamak için gerçekten küçük bir kitaplık oluşturma

Ya da daha iyi ve daha verimli yolu vardır?

3 Cevap

Ben çok modelinde doğrulama dahil çalışan öneriyoruz. Eğer birini yapabilir sonra, oluşturduğunuz herhangi diğerleri çok daha kolay olacaktır. Bu verileri kurtarmaya çalışırken birden denetleyicileri varsa Plus, size doğrulama recode gerekmez. Kohana dokümanlar doğrulama kütüphane ve ORM entegre etmek için bazı örnekler içeren, orada başlamalıdır.

I doğrulama kodu formları init yönteminde olduğu doğrulama için Zend_Forms ile Zend_Validate kullanın. Yapmam gereken her eleman için onaylayıcıların bir dizi geçmek ve çalıştırmak daha ..

$form->isValid($data);

... Formun dışında verileri doğrulamak için.

Ben bir satır ile her dizi girişi ayırmak çünkü doğrulama dizisi kolayca fazla 30 satır. Ama sen sahip olacak sanırım ki her element hakkı için ince taneli doğrulama kuralları tanımlayan eğer.

Ve Zend yeni Doğrulayıcıları tanımlamak gerçekten kolay.

edit: i etki alanı nesneleri kendi doğrulama içeren sağlar Zend Framework uzanan bir çerçeve keşfetti. Onun adı Xyster framework ama ilk denemede işe alamadım o yüzden bundan sonra denemedim.

İşte doğrulama kodu ile başa çıkmak için benim stratejidir. Ben 'doğrulama kütüphane' ile varsayalım, sadece bir e-posta bir e-posta olduğundan emin olun olanlar demek, telefon numaraları sayısal, ve doğada iş kuralları değildir.

Fikir bir functor olarak her iş kuralı kodu var - bu PHP ise, sadece işlevini tanımlamak için bir dize kullanarak alabilirsiniz; Diğer diller için, size strateji desen kullanmak zorunda kalabilirsiniz. (PHP için gerekli değildir) functor için bir arabirim tanımlamak ve bir dizi içine dökümü.

Bir tampon başarı, hata ve bir hata kodu dönecektir dizi ile çalıştırın. Sonunda, hata tampon incelemek ve başarısız olduğu doğrulama belirler. Görünümünü özelleştirmek için kullanın.

İşte bir örnek

$checkUniqueUserName = new CheckUniqueUserName();
$checkEmailNotUsed = new EmailNotUsed();
$validator = array();
$validator[$checkUniqueUserName->name()] = $checkUniqueUserName;
$validator[$checkEmailNotUsed->name()] = $checkEmailNotUsed;

$results = array();

foreach ($validator as $v)
{

  $result[$v->getValidatorName()] = $v->execute($userInfo);
}

class CheckUniqueUserName()
{

   public function execute($userInfo)
   {
       // SQL blah blah blah

      if ($bNameUnique)
        return array ('success' => 1)
      else
        return array ('success' => 0, 'error' => "$name is in used", 'error_code' => 'duplicate_name);

   }

}

Sonunda, bir sonuç dizi, bir doğrulama işlemi ile dolu her olacak ve başarısız olduğu bilmek ve hangi değil. Bu da başarısız alanları vurgulayarak gibi, daha fazla işlem için istemci tarafında geçirilebilir. Error_code bir uygulanmış uygun hata mesajı ve biçimlendirme aramak için kullanılır.

Ben olsa çağrı destek kastım gerçekten emin değilim.