php tür denetleme için iddiaların kullanabilir?

2 Cevap php

Ben istisna atma işlevleri kullanarak php benim sınıfların argümanların bazı kontroller yapmak. Ben temel bir çek (===, in_array, vb) yapmak işlevlere sahiptir ve yanlış bir istisna. Yani assertNumeric($argument, "\$argument is not numeric."); yerine yapabilirsiniz

if ( ! is_numeric($argument) ) {
    throw new Exception("\$argument is not numeric.");
}

Bazı yazarak kaydeder

Ben php manual page on assert() bu yorumlarından okuyordum

As noted on Wikipedia - "assertions are primarily a development tool, they are often disabled when a program is released to the public." and "Assertions should be used to document logically impossible situations and discover programming errors— if the 'impossible' occurs, then something fundamental is clearly wrong. This is distinct from error handling: most error conditions are possible, although some may be extremely unlikely to occur in practice. Using assertions as a general-purpose error handling mechanism is usually unwise: assertions do not allow for graceful recovery from errors, and an assertion failure will often halt the program's execution abruptly. Assertions also do not display a user-friendly error message."

This means that the advice given by "gk at proliberty dot com" to force assertions to be enabled, even when they have been disabled manually, goes against best practices of only using them as a development tool

Yani, 'yanlış yapıyorsun' ben? / Bunu yapmanın daha iyi bir yolu başka ne vardır?

2 Cevap

Şahsen ben ikinci Wikipedia içerik olur ve düzenli tür denetleme için onaylamaları kullanmayın.

Bunun yerine, (php 5.1 ve php 5.2 gibi diziler gibi ... temel veri tipleri ile size yardımcı olmayacaktır anda nesneler üzerinde çalışan, ama yine de hiç yoktan iyidir) PHP tür dayatarak kullanmak istiyorum; o zaman ima hatta biraz daha ileri gitmek ve genel tip ipuçlarının Ilia Alshanetsky adlı yamayı dikkate alındı ​​işlevlerini kullanabilirsiniz. See here.

Düzenli iddialar olduğu gibi, uygun bir küresel sabit veya değişken veya sınıf yapıcı yöntemiyle özel iddialarını off çevirmek gerekir. Onlar gerçekten üretim kodu (aktif) aittir, ya da kütüphanede her türlü varsayılan olarak etkin değildir. Onları kapatabilir bile yapmanız bunları kullanarak ne için, CPU döngüsü bir atık gibi görünüyor.

Düşük seviyeli dilde, iddialar gibi aşırı gayretli mimari özel derleyici optimizasyonları tarafından oluşturulan böcek gibi çok garip durumları yakalamak için çok yararlıdır. Örneğin, herhangi bir aklı başında bir evrende, iddia koşul true olacak biliyorum. Sonra derleyici uzay zaman ve her şeyi değişiklikler kumaş dışında akıntılar. Eğer app derlemek için PHC'nin veya Roadsend gibi bir şey kullanıyor olsaydı Yani, belki de yararlı olacaktır.

Ben de her bir fonksiyonu için giriş iddialar ile korunuyor (çoğunlukla C) 'aşırı güvenli' kod gördük. I really yapmanın bilgeliği soru.

Kısacası, want kodunuz kullanıcı giriş bağlıdır, özellikle eğer, sadece durdurmak değil, tüm incelikle ya da başarısız. Iddialar sadece yanlış, onlar yapmak değil handle hataları değerlendirmek koşullarını rapor.