assertSavın doğruluğuna bakar
&reftitle.description;
boolassertmixedsavThrowablestringnullaçıklama&null;assert beklentilerin tanımlanmasını
sağlayan bir dil oluşumudur: geliştirme ve deneme ortamlarında yürürlüğe
giren, ancak üretimde sıfır maliyetli olacak şekilde en iyilenmiş savlardır.
Savlar yalnızca hata ayıklama özelliği olarak kullanılmalıdır. Bir kullanımı,
her zaman &true; olması gereken, aksi takdirde bazı yazılım hatalarını
gösteren ön koşullar için tutarlılık denetimidir. Başka bir kullanımı ise,
eklenti işlevleri veya belirli sistem sınırları ve özellikleri gibi belirli
özelliklerin varlığını sınamaktır.
Sav denetimi devre dışı bırakılabilecek şekilde yapılandırılabileceğinden,
girdilerin denetlenmesi gibi normal çalışma zamanı işlemleri için
kullanılmamalıdır. Genel bir kural olarak, sav denetimi devre dışı
bırakılsa bile kod beklendiği gibi davranmalıdır.
assert oluşumu, sav ile belirtilen
beklentinin geçerliliğini sınar.
assert oluşumunun davranışı aşağıdaki INI ayarları ile
değiştirilebilir:
Sav yapılandırma yönergeleri
&Name;&Default;&Description;&Changelog;zend.assertions11: kodu üret ve çalıştır (geliştirme kipi)
0: kodu üret ama çalışma anında etrafından dolaş
-1: kod üretme (üretim kipi)
assert.active&true;
&false; ise, assert beklentiyle ilgilenmez
ve koşulsuz olarak &true; döndürür.
PHP 8.3.0 ve sonrasında kullanımı önerilmiyor.
assert.callback&null;
Sav başarısız olduğunda çağrılacak kullanıcı tanımlı işlev. Sözdizimi:
voidassert_callbackstringdosyaintsatırnullsavstringaçıklama
PHP 8.0.0 öncesinde, işlevin sözdizimi şöyle olmalıydı:
voidassert_callbackstringdosyaintsatırstringsavstringaçıklama
PHP 8.3.0 ve sonrasında kullanımı önerilmiyor.
assert.exception
01: Sav başarısız olursa istisnayı yavrula:
Ya istisna bağımsız değişkeni ile sağlanan nesneyi
ya da bir nesne sağlanmamışsa AssertionError
nesnesini.
0: Yukarıda açıklandığı gibi bir
Throwable kullan veya oluştur, ancak o
nesneyi örnekllemek yerine nesneyi temel alan bir uyarı oluştur
(PHP 5 davranışıyla uyumlu)
PHP 8.3.0 ve sonrasında kullanımı önerilmiyor.
assert.bail&false;
&true; ise, beklenti karşılanmazsa PHP betiğinin yürütülmesini iptal eder.
PHP 8.3.0 ve sonrasında kullanımı önerilmiyor.
assert.warning&true;
&true; ise, beklenti karşılanmazsa bir E_WARNING
çıktılanır. Bu INI ayarı, assert.exception
etkinleştirilmişse etkisizdir.
&reftitle.parameters;
sav
Çalıştırılacak ve sonucu, savın başarını belirlemekte kullanılacak
değeri döndüren bir ifade olmalıdır.
PHP 8.0.0 öncesinde, sav PHP kodu olarak
yorumlanan ve eval ile yürütülen bir dizge idi.
Bu dizge geri çağırım işlevine üçüncü bağımsız değişken olarak
aktarılırdı. PHP 7.2.0'da kullanımı artık
ÖNERİLMEMEKTE olup PHP 8.0.0'da
kullanımdan KALDIRILMIŞTIR.
açıklamaaçıklama bir Throwable
örneği ise, yalnızca sav yürütülüp başarısız
olduğunda yavrulanır.
PHP 8.0.0 ve sonrasında, bu, olası bir tanımlanmış onaylama geri
çağrım işlevi çağrılmadan önce yapılır.
PHP 8.0.0 ve sonrasında, nesne
assert.exception
yapılandırmasına bakılmaksızın yavrulanır.
PHP 8.0.0 ve sonrasında, bu durumda
assert.bail etkisizdir.
sav başarısız olursa başarısızlık iletisine
dahil edilecek isteğe bağlı bir açıklama.
açıklama bir dizge ise bir istisna veya uyarı
çıktılanırsa kullanılır.
açıklama kullanılmazsa, derleme zamanında
assert çağrısı için kaynak koduna eşit öntanımlı
bir açıklama oluşturulur.
istisna
PHP 7'de, ikinci bağımsız değişken açıklayıcı bir dizge yerine bir
Throwable nesnesi olabilir; sav başarısız
olursa ve assert.exception
yapılandırma yönergesi de etkinse bu nesne örneklenir.
&reftitle.returnvalues;
Aşağıdakilerin en az biri doğruysa ise &true; döner.
zend.assertions=0zend.assertions=-1assert.exception=1assert.bail=1açıklamada özel bir istisna nesnesi
belirtilmiş.
Koşulların hiçbiri doğru değilse ancak sav doğru ise
assert &true; yoksa &false; ile döner.
&reftitle.changelog;
&Version;&Description;8.3.0assert. INI ayarlarının hiçbirinin kullanımı artık
önerilmiyor.
8.0.0açıklama bir Throwable
örneği ise, yalnızca sav yürütülüp başarısız
olduğunda yavrulanır.
8.0.0açıklama bir Throwable
örneği ise, atanmış olsa bile geri çağırım işlevi çağrılmaz.
8.0.0assert artık dizge savları değerlendirmeye almıyor,
herhangi bir bağımsız değişken gibi ele alıyor. Örneğin, assert('$a ==
$b') yerine artık assert($a == $b) kullanılması
gerekiyor. assert.quiet_eval &php.ini; yönergesi ve
ASSERT_QUIET_EVAL sabiti de kaldırıldı ve artık
herhangi bir etkisi olmayacak.
8.0.0
Bir isim alanı içinde assert() adlı bir işlevin
bildirilmesine artık izin verilmiyor ve böyle bir bildirim olursa
E_COMPILE_ERROR çıktılanıyor.
7.3.0
Bir isim alanı içinde assert() adlı bir işlev
bildirimi artık önerilmiyor ve böyle bir
bildirim olursa bir E_DEPRECATED uyarısı
veriliyor.
7.2.0
Sav olarak bir dizge kullanımı artık önerilmiyor.
Artık hem assert.active hem
de zend.assertions için 1
atanmışsa bir E_DEPRECATED uyarısı veriliyor.
&reftitle.examples;
- assert örneği
2);
echo 'Hi!';
?>
]]>
Savlar etkin olduğunda
(zend.assertions=1
yukarıdaki örneğin çıktısı:
2) in example.php:2
Stack trace:
#0 example.php(2): assert(false, 'assert(1 > 2)')
#1 {main}
thrown in example.php on line 2
]]>
Savlar etkin olmadığında (zend.assertions=0 veya
zend.assertions=-1) yukarıdaki örneğin çıktısı:
- Özel ileti kullanımı
2, "Birin ikiden büyük olması bekleniyor");
echo 'Hi!';
?>
]]>
Savlar etkinken yukarıdaki örneğin çıktısı:
Savlar etkin değilken yukarıdaki örneğin çıktısı:
- Özel istisna sınıfı kullanımı
2, new ArithmeticAssertionError("Expected one to be greater than two"));
echo 'Hi!';
]]>
Savlar etkinken yukarıdaki örneğin çıktısı:
Savlar etkin değilken yukarıdaki örneğin çıktısı:
&reftitle.seealso;
assert_options