PHP kodu kullanılabilir DEBUG sembol var mı?

3 Cevap php

(Teknik olarak bir Önişlemci yok) C ve hatta C # gibi dilleri gibi bir kod yazmak için izin:

#DEFINE DEBUG
...

string returnedStr = this.SomeFoo();
#if DEBUG
    Debug.WriteLine("returned string =" + returnedStr);
#endif

Bu benim iskele biçimi olarak benim kod kullanmak gibi bir şey olduğunu, ve PHP böyle bir şey olup olmadığını merak ediyorum. Ben değişkenleri ile bu taklit eminim, ama ben PHP çoğu durumda yorumlanır gerçeği (bu gerekli değil çünkü) yürütmeden ne zaman şerit kolay / otomatik ayıklama kodu kaldırmak yapmaz düşünün.

3 Cevap

PHP böyle bir şey yok. ama kesinlikle bir şey hızla kırbaç olabilir (ve isterseniz belki regex ayrıştırma daha sonra dışarı şerit). Ben gibi yapardım:

define('DEBUG', true);
...
if (DEBUG):
  $debug->writeLine("stuff");
endif;

Tabii tüm bu işlemek için kendi hata ayıklama modülü yazmak gerekiyor. Eğer regex ayrıştırma hayatı kolaylaştırmak istiyorsa, belki de bunun yerine bir üçlü operatörü kullanabilirsiniz:

$str = 'string';
DEBUG ? $debug->writeLine("stuff is ".$str) : null;

oldukça önemsiz ayıklama hatları kaldırarak kılacak.

xdump hata ayıklama için benim kişisel favorilerimden biridir.

http://freshmeat.net/projects/xdump/

define(DEBUG, true);

[...]

if(DEBUG) echo xdump::dump($debugOut);

Burada belgelenen bir define funciton vardır: http://us.php.net/manual/en/language.constants.php.

Değişkenler ve sabitler arasındaki farkların kümesi belgelerinde açıklandığı göz önüne alındığında, ben PHP'nin define tercüman derleme zamanında kullanılamaz kod yollarını ortadan kaldırmak için izin verdiğini varsayalım, ama bu sadece bir tahmin.

- Douglas Hunter