Nette Documentation Preview

syntax
Değer Doğrulayıcılar
********************

.[perex]
Bir değişkenin örneğin geçerli bir e-posta adresi içerdiğini hızlı ve kolay bir şekilde doğrulamanız mı gerekiyor? O zaman [api:Nette\Utils\Validators] kullanışlı olacaktır, değerleri doğrulamak için yararlı işlevlere sahip statik bir sınıf.


Kurulum:

```shell
composer require nette/utils
```

Tüm örnekler aşağıdaki sınıf takma adının tanımlandığını varsayar:

```php
use Nette\Utils\Validators;
```


Temel Kullanım .[#toc-basic-usage]
==================================

`Validators` sınıfı, kodunuzda kullanmak üzere [isList() |#isList()], [isUnicode |#isUnicode()](), [isEmail |#isEmail()](), [isUrl |#isUrl()]() vb. gibi değerleri doğrulamaya yönelik bir dizi yönteme sahiptir:

```php
if (!Validators::isEmail($email)) {
	throw new InvalidArgumentException;
}
```

Ayrıca, değerin [beklenen türleri |#expected types] karşılayıp karşılamadığını doğrulayabilir; bu, tek tek seçeneklerin dikey bir çubuk `|` ile ayrıldığı bir dizedir. Bu, [if() |#if()] kullanarak birlik türlerini doğrulamayı kolaylaştırır:

```php
if (!Validators::is($val, 'int|string|bool')) {
	// ...
}
```

Ancak aynı zamanda beklentileri dizeler halinde yazmanın (örneğin ek açıklamalarda veya yapılandırmada) ve ardından bunlara göre doğrulamanın gerekli olduğu bir sistem oluşturma fırsatı da verir.

Ayrıca, karşılanmadığı takdirde bir istisna fırlatan [assertion |#assert] da bildirebilirsiniz.


Beklenen Türler .[#toc-expected-types]
======================================

Beklenen tipler, dikey bir çubukla ayrılmış bir veya daha fazla varyanttan oluşan bir dizedir `|`, similar to writing types in PHP (ie. `'int|string|bool')`. Nullable gösterime de izin verilir `?int`.

Tüm elemanları belirli bir türden olan bir dizi `int[]` biçiminde yazılır.

Bazı türlerin ardından iki nokta üst üste işareti ve `:length` uzunluğu veya aralığı gelebilir `:[min]..[max]`örneğin `string:10` (10 bayt uzunluğunda bir dize), `float:10..` (10 ve daha büyük sayı), `array:..10` (on öğeye kadar dizi) veya `list:10..20` (10 ila 20 öğeli liste) veya `pattern:[0-9]+`.

Türlere ve kurallara genel bakış:

.[wide]
| PHP türleri ||
|--------------------------
| `array` .{width: 140px} | öğe sayısı için aralık verilebilir
| `bool` |
| `float` | değer için aralık verilebilir
| `int` | değer için aralık verilebilir
| `null` |
| `object` |
| `resource` |
| `scalar` | int\|float\|bool\|string
Bayt cinsinden uzunluk için | `string` | aralığı verilebilir
| `callable` |
| `iterable` |
| `mixed` |
|------------------------------------------------
| sözde tipler ||
|------------------------------------------------
| `list` | [dizinlenmiş dizi |#isList], öğe sayısı için aralık verilebilir
| `none` | boş değer: `''`, `null`, `false`
| `number` | int\|float
| `numeric` | [metinsel gösterim dahil sayı |#isNumeric]
| `numericint`| [metinsel gösterim dahil tamsayı |#isNumericInt]
| `unicode` | [UTF-8 dizesi |#isUnicode], karakter cinsinden uzunluk için aralık verilebilir
|------------------------------------------------
| karakter sınıfı (boş bir dize olamaz) ||
|------------------------------------------------
| `alnum` | tüm karakterler alfanümeriktir
| `alpha` | tüm karakterler harftir `[A-Za-z]`
| `digit` | tüm karakterler rakamdır
| `lower` | tüm karakterler küçük harftir `[a-z]`
| `space` | tüm karakterler boşluktur
| `upper` | tüm karakterler büyük harftir `[A-Z]`
| `xdigit` | tüm karakterler onaltılık basamaklardır `[0-9A-Fa-f]`
|------------------------------------------------
| sözdizimi doğrulaması ||
|------------------------------------------------
| `pattern` | **tüm** dizenin eşleşmesi gereken bir düzenli ifade
| `email` | [E-posta |#isEmail]
| `identifier`| [PHP tanımlayıcısı |#isPhpIdentifier]
| `url` | [URL |#isUrl]
| `uri` | [URI |#isUri]
|------------------------------------------------
| ortam doğrulama ||
|------------------------------------------------
| `class` | mevcut sınıftır
| `interface` | mevcut arayüzdür
| `directory` | mevcut dizindir
| `file` | mevcut dosya


İddia .[#toc-assertion]
=======================


assert($value, string $expected, string $label='variable'): void .[method]
--------------------------------------------------------------------------

Değerin boru ile ayrılmış [beklenen türlerden |#expected types] olduğunu doğrular. Değilse, [api:Nette\Utils\AssertionException] istisnasını atar. İstisna mesajındaki `variable` kelimesi `$label` parametresi ile değiştirilebilir.

```php
Validators::assert('Nette', 'string:5'); // OK
Validators::assert('Lorem ipsum dolor sit', 'string:78');
// AssertionException: The variable expects to be string:78, string 'Lorem ipsum dolor sit' given.
```


assertField(array $array, string|int $key, string $expected=null, string $label=null): void .[method]
-----------------------------------------------------------------------------------------------------

`$array` dizisindeki `$key` öğesinin boru ile ayrılmış [beklenen türlerden |#expected types] olduğunu doğrular. Değilse, [api:Nette\Utils\AssertionException] istisnasını atar. İstisna mesajındaki `item '%' in array` dizesi `$label` parametresi ile değiştirilebilir.

```php
$arr = ['foo' => 'Nette'];

Validators::assertField($arr, 'foo', 'string:5'); // OK
Validators::assertField($arr, 'bar', 'string:15');
// AssertionException: Missing item 'bar' in array.
Validators::assertField($arr, 'foo', 'int');
// AssertionException: The item 'foo' in array expects to be int, string 'Nette' given.
```


Doğrulayıcılar .[#toc-validators]
=================================


is($value, string $expected): bool .[method]
--------------------------------------------

Değerin boru ile ayrılmış [beklenen türlerden |#expected types] olup olmadığını kontrol eder.

```php
Validators::is(1, 'int|float');  // true
Validators::is(23, 'int:0..10'); // false
Validators::is('Nette Framework', 'string:15');     // true, length is 15 bytes
Validators::is('Nette Framework', 'string:8..');    // true
Validators::is('Nette Framework', 'string:30..40'); // false
```


isEmail(mixed $value): bool .[method]
-------------------------------------

Değerin geçerli bir e-posta adresi olduğunu doğrular. Alan adının gerçekten var olduğunu doğrulamaz, yalnızca sözdizimi doğrulanır. İşlev, unicode da olabilen gelecekteki [TLD'leri |https://en.wikipedia.org/wiki/Top-level_domain] de sayar.

```php
Validators::isEmail('example@nette.org'); // true
Validators::isEmail('example@localhost'); // false
Validators::isEmail('nette');             // false
```


isInRange(mixed $value, array $range): bool .[method]
-----------------------------------------------------

Değerin verilen aralıkta olup olmadığını kontrol eder `[min, max]`burada üst veya alt sınır atlanabilir (`null`). Sayılar, dizeler ve DateTime nesneleri karşılaştırılabilir.

Her iki sınır da eksikse (`[null, null]`) veya değer `null` ise, `false` döndürür.

```php
Validators::isInRange(5, [0, 5]);     // true
Validators::isInRange(23, [null, 5]); // false
Validators::isInRange(23, [5]);       // true
Validators::isInRange(1, [5]);        // false
```


isNone(mixed $value): bool .[method]
------------------------------------

Değerin `0`, `''`, `false` veya `null` olup olmadığını kontrol eder.

```php
Validators::isNone(0); // true
Validators::isNone(''); // true
Validators::isNone(false); // true
Validators::isNone(null); // true
Validators::isNone('nette'); // false
```


isNumeric(mixed $value): bool .[method]
---------------------------------------

Değerin bir sayı mı yoksa bir dize içinde yazılmış bir sayı mı olduğunu kontrol eder.

```php
Validators::isNumeric(23);      // true
Validators::isNumeric(1.78);    // true
Validators::isNumeric('+42');   // true
Validators::isNumeric('3.14');  // true
Validators::isNumeric('nette'); // false
Validators::isNumeric('1e6');   // false
```


isNumericInt(mixed $value): bool .[method]
------------------------------------------

Değerin bir tamsayı mı yoksa bir dize içinde yazılmış bir tamsayı mı olduğunu kontrol eder.

```php
Validators::isNumericInt(23);      // true
Validators::isNumericInt(1.78);    // false
Validators::isNumericInt('+42');   // true
Validators::isNumericInt('3.14');  // false
Validators::isNumericInt('nette'); // false
```


isPhpIdentifier(string $value): bool .[method]
----------------------------------------------

Değerin PHP'de sözdizimsel olarak geçerli bir tanımlayıcı olup olmadığını denetler, örneğin sınıf, yöntem, işlev vb. isimleri için.

```php
Validators::isPhpIdentifier('');        // false
Validators::isPhpIdentifier('Hello1');  // true
Validators::isPhpIdentifier('1Hello');  // false
Validators::isPhpIdentifier('one two'); // false
```


isBuiltinType(string $type): bool .[method]
-------------------------------------------

`$type` PHP yerleşik türü olup olmadığını belirler. Aksi takdirde, sınıf adıdır.

```php
Validators::isBuiltinType('string'); // true
Validators::isBuiltinType('Foo');    // false
```


isTypeDeclaration(string $type): bool .[method]
-----------------------------------------------

Tür bildiriminin sözdizimsel olarak doğru olup olmadığını denetler.

```php
Validators::isTypeDeclaration('?string');      // true
Validators::isTypeDeclaration('string|null');  // true
Validators::isTypeDeclaration('Foo&Bar');      // true
Validators::isTypeDeclaration('(A&C)|null');   // true

Validators::isTypeDeclaration('?string|null'); // false
Validators::isTypeDeclaration('|foo');         // false
Validators::isTypeDeclaration('(A|B)');        // false
```


isClassKeyword(string $type): bool .[method]
--------------------------------------------

`$type` adresinin `self`, `parent`, `static` dahili türlerinden biri olup olmadığını belirleyin.

```php
Validators::isClassKeyword('self'); // true
Validators::isClassKeyword('Foo');  // false
```


isUnicode(mixed $value): bool .[method]
---------------------------------------

Değerin geçerli bir UTF-8 dizesi olup olmadığını kontrol eder.

```php
Validators::isUnicode('nette'); // true
Validators::isUnicode('');      // true
Validators::isUnicode("\xA0");  // false
```


isUrl(mixed $value): bool .[method]
-----------------------------------

Değerin geçerli bir URL adresi olup olmadığını kontrol eder.

```php
Validators::isUrl('https://nette.org:8080/path?query#fragment'); // true
Validators::isUrl('http://localhost');            // true
Validators::isUrl('http://192.168.1.1');          // true
Validators::isUrl('http://[::1]');                // true
Validators::isUrl('http://user:pass@nette.org');  // false
Validators::isUrl('nette.org');                   // false
```


isUri(string $value): bool .[method]
------------------------------------

Değerin geçerli bir URI adresi olduğunu, yani aslında sözdizimsel olarak geçerli bir şema ile başlayan bir dize olduğunu doğrular.

```php
Validators::isUri('https://nette.org');           // true
Validators::isUri('mailto:gandalf@example.org');  // true
Validators::isUri('nette.org');                   // false
```

Değer Doğrulayıcılar

Bir değişkenin örneğin geçerli bir e-posta adresi içerdiğini hızlı ve kolay bir şekilde doğrulamanız mı gerekiyor? O zaman Nette\Utils\Validators kullanışlı olacaktır, değerleri doğrulamak için yararlı işlevlere sahip statik bir sınıf.

Kurulum:

composer require nette/utils

Tüm örnekler aşağıdaki sınıf takma adının tanımlandığını varsayar:

use Nette\Utils\Validators;

Temel Kullanım

Validators sınıfı, kodunuzda kullanmak üzere isList(), isUnicode(), isEmail(), isUrl() vb. gibi değerleri doğrulamaya yönelik bir dizi yönteme sahiptir:

if (!Validators::isEmail($email)) {
	throw new InvalidArgumentException;
}

Ayrıca, değerin beklenen türleri karşılayıp karşılamadığını doğrulayabilir; bu, tek tek seçeneklerin dikey bir çubuk | ile ayrıldığı bir dizedir. Bu, if() kullanarak birlik türlerini doğrulamayı kolaylaştırır:

if (!Validators::is($val, 'int|string|bool')) {
	// ...
}

Ancak aynı zamanda beklentileri dizeler halinde yazmanın (örneğin ek açıklamalarda veya yapılandırmada) ve ardından bunlara göre doğrulamanın gerekli olduğu bir sistem oluşturma fırsatı da verir.

Ayrıca, karşılanmadığı takdirde bir istisna fırlatan assertion da bildirebilirsiniz.

Beklenen Türler

Beklenen tipler, dikey bir çubukla ayrılmış bir veya daha fazla varyanttan oluşan bir dizedir |, similar to writing types in PHP (ie. 'int|string|bool'). Nullable gösterime de izin verilir ?int.

Tüm elemanları belirli bir türden olan bir dizi int[] biçiminde yazılır.

Bazı türlerin ardından iki nokta üst üste işareti ve :length uzunluğu veya aralığı gelebilir :[min]..[max]örneğin string:10 (10 bayt uzunluğunda bir dize), float:10.. (10 ve daha büyük sayı), array:..10 (on öğeye kadar dizi) veya list:10..20 (10 ila 20 öğeli liste) veya pattern:[0-9]+.

Türlere ve kurallara genel bakış:

PHP türleri
array öğe sayısı için aralık verilebilir
bool  
float değer için aralık verilebilir
int değer için aralık verilebilir
null  
object  
resource  
scalar int|float|bool|string

Bayt cinsinden uzunluk için | string | aralığı verilebilir

callable
iterable
mixed
sözde tipler
list dizinlenmiş dizi, öğe sayısı için aralık verilebilir
none boş değer: '', null, false
number int|float
numeric metinsel gösterim dahil sayı
numericint metinsel gösterim dahil tamsayı
unicode UTF-8 dizesi, karakter cinsinden uzunluk için aralık verilebilir
karakter sınıfı (boş bir dize olamaz)
alnum tüm karakterler alfanümeriktir
alpha tüm karakterler harftir [A-Za-z]
digit tüm karakterler rakamdır
lower tüm karakterler küçük harftir [a-z]
space tüm karakterler boşluktur
upper tüm karakterler büyük harftir [A-Z]
xdigit tüm karakterler onaltılık basamaklardır [0-9A-Fa-f]
sözdizimi doğrulaması
pattern tüm dizenin eşleşmesi gereken bir düzenli ifade
email E-posta
identifier PHP tanımlayıcısı
url URL
uri URI
ortam doğrulama
class mevcut sınıftır
interface mevcut arayüzdür
directory mevcut dizindir
file mevcut dosya

İddia

assert($value, string $expected, string $label='variable')void

Değerin boru ile ayrılmış beklenen türlerden olduğunu doğrular. Değilse, Nette\Utils\AssertionException istisnasını atar. İstisna mesajındaki variable kelimesi $label parametresi ile değiştirilebilir.

Validators::assert('Nette', 'string:5'); // OK
Validators::assert('Lorem ipsum dolor sit', 'string:78');
// AssertionException: The variable expects to be string:78, string 'Lorem ipsum dolor sit' given.

assertField(array $array, string|int $key, string $expected=null, string $label=null)void

$array dizisindeki $key öğesinin boru ile ayrılmış beklenen türlerden olduğunu doğrular. Değilse, Nette\Utils\AssertionException istisnasını atar. İstisna mesajındaki item '%' in array dizesi $label parametresi ile değiştirilebilir.

$arr = ['foo' => 'Nette'];

Validators::assertField($arr, 'foo', 'string:5'); // OK
Validators::assertField($arr, 'bar', 'string:15');
// AssertionException: Missing item 'bar' in array.
Validators::assertField($arr, 'foo', 'int');
// AssertionException: The item 'foo' in array expects to be int, string 'Nette' given.

Doğrulayıcılar

is($value, string $expected)bool

Değerin boru ile ayrılmış beklenen türlerden olup olmadığını kontrol eder.

Validators::is(1, 'int|float');  // true
Validators::is(23, 'int:0..10'); // false
Validators::is('Nette Framework', 'string:15');     // true, length is 15 bytes
Validators::is('Nette Framework', 'string:8..');    // true
Validators::is('Nette Framework', 'string:30..40'); // false

isEmail(mixed $value): bool

Değerin geçerli bir e-posta adresi olduğunu doğrular. Alan adının gerçekten var olduğunu doğrulamaz, yalnızca sözdizimi doğrulanır. İşlev, unicode da olabilen gelecekteki TLD'leri de sayar.

Validators::isEmail('example@nette.org'); // true
Validators::isEmail('example@localhost'); // false
Validators::isEmail('nette');             // false

isInRange(mixed $value, array $range)bool

Değerin verilen aralıkta olup olmadığını kontrol eder [min, max]burada üst veya alt sınır atlanabilir (null). Sayılar, dizeler ve DateTime nesneleri karşılaştırılabilir.

Her iki sınır da eksikse ([null, null]) veya değer null ise, false döndürür.

Validators::isInRange(5, [0, 5]);     // true
Validators::isInRange(23, [null, 5]); // false
Validators::isInRange(23, [5]);       // true
Validators::isInRange(1, [5]);        // false

isNone(mixed $value): bool

Değerin 0, '', false veya null olup olmadığını kontrol eder.

Validators::isNone(0); // true
Validators::isNone(''); // true
Validators::isNone(false); // true
Validators::isNone(null); // true
Validators::isNone('nette'); // false

isNumeric(mixed $value): bool

Değerin bir sayı mı yoksa bir dize içinde yazılmış bir sayı mı olduğunu kontrol eder.

Validators::isNumeric(23);      // true
Validators::isNumeric(1.78);    // true
Validators::isNumeric('+42');   // true
Validators::isNumeric('3.14');  // true
Validators::isNumeric('nette'); // false
Validators::isNumeric('1e6');   // false

isNumericInt(mixed $value)bool

Değerin bir tamsayı mı yoksa bir dize içinde yazılmış bir tamsayı mı olduğunu kontrol eder.

Validators::isNumericInt(23);      // true
Validators::isNumericInt(1.78);    // false
Validators::isNumericInt('+42');   // true
Validators::isNumericInt('3.14');  // false
Validators::isNumericInt('nette'); // false

isPhpIdentifier(string $value)bool

Değerin PHP'de sözdizimsel olarak geçerli bir tanımlayıcı olup olmadığını denetler, örneğin sınıf, yöntem, işlev vb. isimleri için.

Validators::isPhpIdentifier('');        // false
Validators::isPhpIdentifier('Hello1');  // true
Validators::isPhpIdentifier('1Hello');  // false
Validators::isPhpIdentifier('one two'); // false

isBuiltinType(string $type)bool

$type PHP yerleşik türü olup olmadığını belirler. Aksi takdirde, sınıf adıdır.

Validators::isBuiltinType('string'); // true
Validators::isBuiltinType('Foo');    // false

isTypeDeclaration(string $type)bool

Tür bildiriminin sözdizimsel olarak doğru olup olmadığını denetler.

Validators::isTypeDeclaration('?string');      // true
Validators::isTypeDeclaration('string|null');  // true
Validators::isTypeDeclaration('Foo&Bar');      // true
Validators::isTypeDeclaration('(A&C)|null');   // true

Validators::isTypeDeclaration('?string|null'); // false
Validators::isTypeDeclaration('|foo');         // false
Validators::isTypeDeclaration('(A|B)');        // false

isClassKeyword(string $type)bool

$type adresinin self, parent, static dahili türlerinden biri olup olmadığını belirleyin.

Validators::isClassKeyword('self'); // true
Validators::isClassKeyword('Foo');  // false

isUnicode(mixed $value): bool

Değerin geçerli bir UTF-8 dizesi olup olmadığını kontrol eder.

Validators::isUnicode('nette'); // true
Validators::isUnicode('');      // true
Validators::isUnicode("\xA0");  // false

isUrl(mixed $value): bool

Değerin geçerli bir URL adresi olup olmadığını kontrol eder.

Validators::isUrl('https://nette.org:8080/path?query#fragment'); // true
Validators::isUrl('http://localhost');            // true
Validators::isUrl('http://192.168.1.1');          // true
Validators::isUrl('http://[::1]');                // true
Validators::isUrl('http://user:pass@nette.org');  // false
Validators::isUrl('nette.org');                   // false

isUri(string $value): bool

Değerin geçerli bir URI adresi olduğunu, yani aslında sözdizimsel olarak geçerli bir şema ile başlayan bir dize olduğunu doğrular.

Validators::isUri('https://nette.org');           // true
Validators::isUri('mailto:gandalf@example.org');  // true
Validators::isUri('nette.org');                   // false