PHP Constant yok: Bildirimi

6 Cevap php

Ben bir sabit yoksa sadece tıpkı bana bir haber atıyor ama bunun bir hata (veya istisna) olmak istiyorum (hangi nedenle olursa olsun), benim PHP uygulamaları içinde geneli değişkenler olarak sabitler kullanmak istiyorum zaman i mevcut değil değişken echo deneyin.

Olması mümkün sabit değerleri, böyle bir şey almak için ayrı bir işlevi kullanmadan:

echo $non_existing_variable; // Error
echo NON_EXISTING_CONSTANT; // Now also an error

Biraz etrafında Arıyorum ama bir şey bulamadı ..

I kod yürütme anında çıkar ve bir hata atar varolmayan bir değişkeni kullanmaya çalıştığınızda bana nazik bir mantıklı görünüyor, neden bu sabitleri ile değil mi?

Thanks Stefan

6 Cevap

Senin gibi bir şey yapmak mümkün olmalıdır onunla defined kullanarak öneririm

if (defined('CONSTANT')) {
    echo CONSTANT;
} else {
    throw new Exception('Undefined Constant.');
}

Edit:

Ben aşağıda açıklamada belirtildiği gibi bu yöntemi kullanarak alternatif set_error_handler Eğer fark yakalamak ve bir eylemde gerekir kullanarak, bir özel hata işleyicisi kullanmaktır.

Sen yaratabilecek a custom error handler o olur

  1. Hata Bildirimi olup olmadığını kontrol
  2. Hata dize 'Tanımsız sınıf sabiti' yer olmadığını kontrol edin
  3. Böylece hem sayıları varsa, istisna

Bu ne istediğinizi alırsınız. Bu yaklaşım ile sorun artık TÜM hataları işlemek için sorumlu konum olduğunu. PHP'nin hata işleme tamamen atlanır.

Başka bir yaklaşım, bir yapılandırma sınıfı tanımlamak olmak ve onun sabitleri kullanmak

class Config{
    const CONFIG_ONE = 42;
}
//will produce a fatal error 
if(Config::CONFIG_TWO){
   //...
}

Yerine bir haber size daha doğru görünüyor ki, ölümcül bir hata alırsınız. Ne yazık ki, (manuelin set_error_handler girişi yorumlara bakınız) benzer hijinks olmadan ölümcül hataları yakalamak değil.

Kapalı bir şekilde başladığımız yerden gittiği yoldur Son bir seçenek, özel sınıf değişkenleri size değerlerini tutan bir yapılandırma Singleton, yaratmaktır. Bu size birisi tanımsız bir yapılandırma değerini erişmeye çalıştığında ne üzerinde tam programatic kontrol verir, ancak sabitler yararları gevşek yok.

You might to write your own error handler. More info here:

http://php.net/manual/en/errorfunc.examples.php

http://www.w3schools.com/php/php_error.asp

Ben özel durumlar içine tüm hataları (ne olursa olsun seviye) döner bir hata işleyicisi yüklemenizi öneririm. Sizin kod onlar uyarı veya bildirimler olsun, herhangi bir hata olmamalıdır.

Bkz: handling-errors-as-exceptions-best-methods

Verilen ada sahip bir sabit olup olmadığını kontrol etmek için defined fonksiyonu kullanın.

Yes i tanımlı işlevi hakkında biliyorum, ama bir sabit olup olmadığını her zaman kontrol etmek oldukça bir çalışma olduğunu, bu yüzden otomatik olarak yerine bir hata veya özel durum için bir ekstra fonksiyonu kullanmadan php ayar veya hile çeşit arıyorum bir sabit mevcut olmayan bir haber.

I kod yürütme anında çıkar ve bir hata atar varolmayan bir değişkeni kullanmaya çalıştığınızda bana nazik bir mantıklı görünüyor, neden bu sabitleri ile değil mi?

Teşekkürler kadar (-: