Debug modunda intoa birden PHP sınıfları nasıl ayarlanır?

4 Cevap

Ne kolay hata ayıklama moduna 10 + PHP sınıfları ayarlanır ancak hala başka şeyler bağımlı olmayan sınıfları tutmak için en iyi yol olacağını?

Ben bir küresel sabite ayarlarsanız daha sonra her sınıf bu sabit varlık sette güvenen her sınıf içinde değer daha sonra kontrol ediniz. Ben başka bir dosyadan bir sabit dayanarak başka bir projede sınıfını kullanmayı denerseniz Anlamı.

4 Cevap

Soru biraz çelişkili değil mi? 10 + sınıfları var ve bir 'hata ayıklama' devlet olmak üzere birlikte başka bir şey depend onları sahip olmak istiyorsanız, o zaman gerçekten tamamen bağımsız onları tutamaz. Nokta mutlaka bir şey bağımlı olmasıdır; Ben senin en iyi take az saplanıyor çözüm ne seçim olduğunu düşünüyorum.

Ben iki şekilde düşünebilirsiniz: Bir define kullanarak ve bir çevre değişkeni.

Ben kullanmak istiyorum bir define:

define('DEBUG', true);

Sabit varsa ve sınıf ilan önce benim sınıf dosyaları her birinde, ben kontrol ederdim:

if(!defined('DEBUG')) define('DEBUG', $my_default_debug_value);

Yani onlar hala bağımsız bir şekilde çalışabilir, ama sen yine de bir sabitine bağlı demektir.


Bir başka olasılık, bir ortam değişkeni güvenmek olacaktır, ancak çevre değişkenleri izin verildiği üzerinde hiçbir kavrama varsa o safe_mode altında başarısız olabilir. Ben onları sevmiyorum çünkü ben şahsen kullanmak olmaz, ama belki de aradığınız sadece ne.

putenv('MYPROJECTNAME_DEBUG=1');

Sonra getenv 'MYPROJECTNAME_DEBUG' ortam değişkeni almak için kullanılabilir; buldum olamaz eğer yanlış olacaktır.

getenv('MYPROJECTNAME_DEBUG');

Gibi bir şey yapabilirsiniz:

define("DEBUG", TRUE);

ve daha sonra

if(defined("DEBUG"))
{
    // .... debug code
}

Bu hata ayıklama moduna tüm komut kuracak

Bunun yerine sınıf sabitleri kullanabilirsiniz. (Veya ad sabitler o içine ise)

class MyClass{
    const Debug = true;

    public function do()
    {
          if(self::Debug == true)
          {
               // .. debug stuff
          }
    }
}

Sonra sadece durumuna göre sabit değiştirin.

Ben kendi ad benim tüm 'sistem' belirli dosyaları (logger, veritabanı bağlantısı, vb) tutmak gibi, ad kullanırken Bu aslında çok güçlü. Ben bu sınıfların her ad belirli hata ayıklama sabitleri kontrol varsa, ben sadece hata ayıklama modunda (değil-sistem kodu) üzerinde çalışıyorum kod olabilir.

Ben kullanmak sabit bir *IS_PRODUCTION*, hangi false , tüm uyarıları gösterilmesini şüpheli ve başarısızlıkları hakkında çıkış ek bilgi anlamına gelir ayarlandığında ... Bu sürekli her sayfada yer almaktadır.

P.S. Ben doğru sorunuzu anladım umuyoruz ...

Hata ayıklama modunda ederek ilginizi çekebilir ne anlama bağlı Assertions.