Giter Club home page Giter Club logo

validation's Introduction

Doğrulama Hakkında

Bu doğrulama paketi, size kolay bir şekilde formları doğrulamanıza olanak sağlar. Basit mantık üzerinde işleyişi yatıyor. Kuralı tanımla, kuralı nesneye tanıt ve kuralı kullan şeklindedir.

Illuminate\Validation Laravel'den esinlenilmiştir.

Özellikleri

  • Özel kurallar belirleme
  • Özel hata mesajları belirleme
  • Kullanım kolaylığı

Gereklilikler

  • composer
  • php >= 7.4.23

Basit Kullanım

Paketi kurmadan önce basit kullanımına bakalım:

$validation = new ahmetbarut\Validation\Validate();

$validation->setFields($_POST)->setRules(
    [
        "id" => ["required", "number"],
        "name" => ["string", "required"],
        "date" => ["date", "required"],
    ]
)->make();

setFields yöntemi, form alanlarını dizi şeklinde vermenizi sağlar. setRules yöntemi, kurallardan geçecek olan alanları belirtmemizi sağlar. make yöntemi, sıraya alınan işleri yürütür ve sonucu döndürür. Başarı durumunda true, başarısızlık durumunda ise hata mesajı döndürür.

Kurallar

Kurallar, ilgili input alanlarının karşılaması gereken koşulları belirtmeyi sağlar. Yani basitçe ilgili input alanında sadece sayı ve 1-9 arasında değeri kabul ediyoruz normal durumda bunun için koşul yazıp, o şekilde doğrularız burda sorun yok ama birden fazla form alanı varsa ? Bu durumda sürekli kopyala/yapıştır yapmamız gerekebilir fakat burda kural yazınca ona bile gerek kalmıyor 1 defa yaz sürekli kullan ve karmaşayı da önlüyor.

Kurulum Ve Kural Tanımlama

Kurulum

Kurulum için composer'e ihtiyacımız var. getcomposer.com adresinden indirebilirsiniz.

    composer require ahmetbarut/validation

Eğer uygulamanızda Container(Kapsayıcı) kullanılıyorsa nesneyi kapsayıcı içinde oluşturmanız daha sağlıklı olur.

Kural Tanımlama

Kural tanımlamak için öncelikle bu arayüzü ahmetbarut\Validation\Validation\Rule implement etmeniz gerekiyor. İlgili arayüzde 2 yöntemi ekletmek isteyecek. Bunlar: check ve message check yönteminde, koşul yazmanızı sağlar ve duruma göre bool değer döndürmeniz gerekli. message yönteminde eğer başarısızlık varsa ilgili mesaj geriye döndürülür. Örenk Sınıf:

namespace ahmetbarut\Validation\Validation\Rules;

use ahmetbarut\Validation\Validation\Rule;

class Number implements Rule
{

    public function check(string $attr, string $value): bool
    {
        return is_numeric($value);
    }

    public function message(): string
    {
        return "Sayısal olmalıdır!";
    }
}

Bu sınıfı nesneye tanıtmak için nesneyi ilk oluşturduğumuzda verebiliriz. Bu arada nesneyi isteklerin ilk geldiği veya isteklerin geçtiği yerde oluşturmanız gerekli sonraki durumlarda böyle bir zorunluluk yok. Yani şöyle, eğer kural tanımlanacaksa belirttiğim şekilde olması gerekli. Sonraki durumda kuralların tutulduğu değişken static olduğu için nesneyi bir sonraki sefer ürettiğinizde yok olmaz önceki değerleri taşır.

Kural tanımlamanın 1 kuralı vardır. Dizi şeklinde verilmesi gerekir. Örn ["kural_adi" => Kural::class] kurala verilmek istenen isim ve sınıfın alan adı yani namespace. Kuralı tanımlayalım :

use ahmetbarut\Validation\Validate;
use ahmetbarut\Validation\Validation\Rule;

require_once "./vendor/autoload.php";

class Number implements Rule
{

    public function check(string $attr, string $value): bool
    {
        return is_numeric($value);
    }

    public function message(): string
    {
        return "Sayısal olmalıdır!";
    }
}

$validation = new ahmetbarut\Validation\Validate(["numara" => \Number::class]);

$validation->setFields($_POST)->setRules(
    [
        "id" => ["required", "numara"],
        "name" => ["string", "required"],
        "date" => ["date", "required"],
    ]
)->make();

Verilen form alanlarını nesne üzerinden almak istiyorsanız

$validation = new ahmetbarut\Validation\Validate(["numara" => \Number::class]);

$validation->setFields($_POST)->setRules(
    [
        "id" => ["required", "numara"],
        "name" => ["string", "required"],
        "date" => ["date", "required"],
    ]
)->make();

$validation->getAllFields();

Parametre Gönderme

Kurala parametre atanabiliyor. Ama öncesinde ilgili kuralın __construct yöntemi tanımlı olmalı. Onun dışında herhangi bir eklemeye ihtiyaç duymuyor.

$validation = new ahmetbarut\Validation\Validate();

$validation->setFields($_POST)->setRules(
    [
        "id" => ["required",  new Max(50)],
        "name" => ["string", "required"],
        "date" => ["date", "required"],
    ]
)->make();

$validation->getAllFields();

validation's People

Contributors

ahmetbarut avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.