PHP: Nerede doğrulama işlevleri saklanmalıdır?

3 Cevap php

Ben PHP MVC Framework kullanıyorum, ve ben sadece bunları gerektiğinde denilen olsun bir yardımcı sınıf tüm benim doğrulama fonksiyonları koymasında oldum.

Ancak, özel veritabanları, veri ile değil, çalışma hakkında mantık için model değil mi? Benim modellerinden birini doğrulama fonksiyonları koymak daha mantıklı olur?

Teşekkürler

3 Cevap

Model katmanı uygulama gerçek dünyada işe nasıl modelleme için, bu yüzden veri ile başa çıkmak için sadece zorunlu değil.

Doğrulama fonksiyonları ortak bir yaklaşım gerçekleştirmek istediğiniz doğrulama her türü için Validator sınıfı yaratmaktır. Bir Validator nesnesi kullanan herhangi bir kod hepsi aynı iş emin olabilirsiniz böylece Doğrulayıcıları, bir arabirim uygulamak gerekir.

Böyle bir şey:

interface iValidator
{
    public function validate($mixed);
    public function getMessage();
}

class Validator_Email implements iValidator
{
    public function validate($data)
    {
         //validate an email address
    }

    public function getMessage()
    {
    	return 'invalid email address.';
    }
}

class Validator_PositiveInteger implements iValidator
{
    public function validate($data)
    {
    	return ctype_digit((string) $data) && $data != 0; 
    }

    public function getMessage()
    {
    	return 'must be a positive integer';
    }
}

Eğer bir çerçeve kullanıyorsanız, o zaten kullanmak veya benzer bir şekilde uzatabilirsiniz doğrulama sınıflarına sahip olabilir.

Evet, modelleri doğrulama koymak olacaktır. Ancak, kullanmakta olduğunuz MVC framework söz etmedi. Eğer CodeIgniter'ı ve kullanıyorsanız onun doğrulama inşa, bu tür denetleyicisi doğrulamak için sizi zorlar.

Bu durumda doğrulama bir kullanıcı girişi geliyor - potansiyel, birçok model için aynı giriş 'tip' doğrulamak istediğiniz gidiyoruz. Ben Doğrulama sınıfları bir dizi ile gitmek (Zend_Validate bakınız) ve Controller giriş filtreleri / doğrulayıcılarıyla olarak kullanmak istiyorum.

Onun In / Out manipülasyon beri, ben bunun için yer olarak Kontrol bkz. Model veri saklanabilir ve emin yapma konusunda daha fazla endişe olmalıdır.