• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Validator PHP Klasa

VPS Starter Arubacloud
0 głosów
183 wizyt
pytanie zadane 15 sierpnia 2017 w PHP przez chmod96 Obywatel (1,350 p.)

Cześć, napisałem taką klasę do walidacji danych aby móc ją później wykorzystywać we własnych projektach.

pytanie mam do was co o niej sądzicie czy jest ok czy coś trzeba zmienić ?

<?php
abstract class Validator
{
    /*
     * This method validates the IP address.
     */
     static function checkAddressIp($ip)
     {
        if(!filter_var($ip, FILTER_VALIDATE_IP))
        {
            return false;
        }

        return true;
     }


    /*
     * This method validates the e-mail address.
     */
    static function checkEmail($email)
    {
        if(!filter_var($email, FILTER_VALIDATE_EMAIL))
        {
            return false;
        }

        return true;
    }


    /*
     * This method validates the url address.
     */
     static function checkUrl($url)
     {
        if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i", $url))
        {
            return false;
        }

        return true;
     }

    
    /*
     * The method validates Hex color.
     */
    static function isHexColor($color)
    {
        if(!preg_match('/^#[a-f0-9]{6}$/i', $color))
        {
            if(!preg_match('/^[a-f0-9]{6}$/i', $color))
            {
                return false;
            }
        }

        return true;
    }

     
    /*
     * The method checks if the value is not empty.
     */
    static function isRequired($string)
    {
        if(!empty($string))
        {
            return true;
        }

        return false;
    }
}
?>

wywołanie metody

Validator::checkEmail("email@email.com");

 

1 odpowiedź

+3 głosów
odpowiedź 15 sierpnia 2017 przez Assasz Nałogowiec (30,460 p.)

1. Dlaczego klasa abstrakcyjna?

2. Brak modyfikatorów dostępu metod - naruszasz PSR-2.

3. Naruszasz pierwszą zasadę SOLID o pojedynczej odpowiedzialności. Zamiast budować jedną klasę z wieloma metodami walidacji, możesz zrobić wiele niezależnych klas z jedną metodą walidacji (do tego zaimplementowany odpowiedni interfejs dbający o to, by taka klasa zawsze posiadała metodę odpowiadającą za walidację).

Czyli np. tak:

interface ValidatorInterface
{
    public static function validate($data);
}

class AddressIpValidator implements ValidatorInterface
{
    public static function validate($ip)
   {
        //coś tam coś tam
   }
}

Dodaj do tego przestrzenie nazw, autoloading i będzie git.

komentarz 15 sierpnia 2017 przez chmod96 Obywatel (1,350 p.)
Abstrakcyjna dlatego że chciałem żeby ta klasa nie mogła mieć swoich obiektów
komentarz 15 sierpnia 2017 przez HaKIM Szeryf (87,590 p.)

Abstrakcyjna dlatego że chciałem żeby ta klasa nie mogła mieć swoich obiektów

To nie lepiej ustawić __constructor() na prywatny?

Tak z innej beczki:

    /*
     * The method checks if the value is not empty.
     */
    static function isRequired($string)

Coś się tutaj nie zgadza. ;)

komentarz 15 sierpnia 2017 przez chmod96 Obywatel (1,350 p.)
to akurat na szybko pisałem więc wkradł się błąd

Podobne pytania

0 głosów
1 odpowiedź 323 wizyt
pytanie zadane 4 października 2020 w PHP przez Antoni2422 Użytkownik (570 p.)
0 głosów
1 odpowiedź 110 wizyt
0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 15 marca 2018 w PHP przez michh123 Bywalec (2,790 p.)

92,416 zapytań

141,222 odpowiedzi

318,984 komentarzy

61,831 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...