seymenkonuk / validator
Modern PHP uygulamaları için geliştirilmiş şema tabanlı veri doğrulama kütüphanesi. Esnek kural sistemi, iç içe veri yapısı desteği ve zincirlenebilir API ile güçlü ve ölçeklenebilir validasyon çözümleri sunar.
Requires (Dev)
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^11
README
Modern PHP uygulamaları için geliştirilmiş şema tabanlı veri doğrulama kütüphanesi.
Açıklama
Modern PHP uygulamaları için geliştirilmiş fluent API tabanlı, şema odaklı bir veri doğrulama kütüphanesidir. Karmaşık veri yapılarını (nested object, array, primitive tipler) okunabilir ve zincirlenebilir bir API ile tanımlamanıza olanak sağlar. Yerleşik kuralların yanı sıra genişletilebilir yapı sunar ve doğrulama hatalarını çoklu dil desteği ile yönetebilir. Framework bağımsızdır ve her PHP projesine kolayca entegre edilebilir.
Özellikler
- Fluent API
- Şema tabanlı doğrulama
- İç içe nesne (nested object) desteği
- Dizi (array) doğrulama desteği
- Varsayılan değerler
- Güçlü tip doğrulama
- Tarih ve zaman doğrulamaları
- $_FILES verileri için dosya doğrulama
- File interface'i için dosya doğrulama
- Çoklu dil (i18n) desteği
- Özelleştirilebilir çeviri sistemi
- Detaylı hata raporlama
- Framework bağımsız kullanım
- PHPUnit ile test edilmiş
- PHPStan desteği
Kurulum
composer require seymenkonuk/validator
Yapılandırma
Yerelleştirme
$validator = new Validator(new Translator( new FileLoader(), "tr", ));
Özel Dil Ekleme
Kütüphanede şu an yalnızca iki dil bulunmaktadır. Bu diller haricinde bir dil kullanmak isterseniz kendi dilinizi ekleyebilirsiniz.
$validator = new Validator(new Translator( new FileLoader(__DIR__ . "/lang"), "tr", ));
Örnek Dil Dosyası
return [ "required" => "Bu alan zorunludur.", "string" => "Bu alan metin olmalıdır.", "email" => "Bu alan geçerli bir e-posta olmalıdır.", 'min' => 'Bu alan en az {value} olmalıdır!', // ve daha fazlası... ];
Kullanım
Şema Oluşturma
$schema = $validator->object()->schema([ "username" => $validator->field() ->string() ->min(2) ->max(10) ->required(), "email" => $validator->field() ->email() ->required(), "is_agreed" => $validator->field() ->bool() ->true() ->required(), ]);
Doğrulama
$result = $schema->validate([ "username" => "seymenkonuk", "email" => "konukrecepseymen@gmail.com", "is_agreed" => true, ]); if ($result->passed()) { var_dump($result->validated()); } else { var_dump($result->errors()); }
💡 Not: $result->failed(), !$result->passed() ile tamamen eşdeğerdir; yalnızca okunabilirliği artırmak için sağlanmıştır.
Nested Şema
$schema = $validator->object()->schema([ "parent" => $validator->object()->schema([ "name" => $validator->field()->string()->required(), "surname" => $validator->field()->string()->required(), ])->required(), ]);
Dizi Doğrulama
$schema = $validator->object()->schema([ "hobbies" => $validator->array() ->items($validator->field()->string()) ->minItems(0) ->maxItems(10) ->default([]), ]);
Dosya Doğrulama
PHP tarafından $_FILES içerisinde oluşturulan dosya dizilerini doğrulamak için:
$schema = $validator->object()->schema([ "image_file" => $validator->field() ->uploaded() ->mimes(["image/jpeg", "image/png", "image/gif"]) ->extensions(["jpg", "jpeg", "png", "gif"]) ->min(1 * 1024) ->max(100 * 1024 * 1024) ->required(), ]); $result = $schema->validate($_FILES);
File interface'ini uygulayan dosya nesnelerini doğrulamak için:
$schema = $validator->object()->schema([ "image_file" => $validator->field() ->file() ->mimes(["image/jpeg", "image/png", "image/gif"]) ->extensions(["jpg", "jpeg", "png", "gif"]) ->min(1 * 1024) ->max(100 * 1024 * 1024) ->required(), ]); $result = $schema->validate([ "image_file" => $file ]);
Lisans
Bu proje MIT Lisansı ile lisanslanmıştır.