it-swarm.asia

Eklentileri nasıl hata ayıklarsınız?

Eklenti yazma konusunda oldukça yeniyim ve hata ayıklama konusunda zorlanıyordum.

Çok yankı kullandım ve özensiz ve çirkin.

Bunu yapmanın daha iyi bir yolu olduğundan eminim, belki de eklentiyi dahil ederek tüm siteyi çalıştırabileceğim bir hata ayıklayıcı ile bir IDE?

47
Sruly

Wp-config.php dosyasına girin ve define('WP_DEBUG', false); öğesini define('WP_DEBUG', true); olarak değiştirin. Ayrıca, Andrew Nacin'in Log Deprecated Notices plugin uygulamasını yükleyin.

21
John P Bloch

Hatalar yazdırılıyorsa, x-debug, PHP'ye modern backtraces ekleyen mükemmel bir PHP uzantısıdır.

Hata olmadığı yerde neler olup bittiğini çözmeye çalışıyorsanız, en sevdiğim yaklaşım çıktılarını bir dosyaya kaydeden bir işlev tanımlamaktır. Bu yüzden plog ($ değişken) yapıyorum ve bu daha sonra inceleyebileceğim günlük dosyasında görünüyor. Bu, özellikle header () çağrılmadan önce olanları veya STDOUT'a yazdıramadığınız diğer durumları çözmeye çalıştığınızda kullanışlıdır.

12
tomdxw

xdebug + NetBeans IDE kullanın. Tamamen yapılandırıldığında - ki kolay olan - eklentinizdeki kesme noktalarını ayarlayabilir ve değişkenleri kesme noktalarında izleyebilirsiniz. Ben bu konuda eklentileri veya herhangi bir php uygulamalarında hata ayıklamak için en iyi yol olduğunu düşünüyorum.

10
Raj

Eski moda şekilde hata ayıklarım, error_log()ing ve var_dumping. Bunun benim için en etkili yol olduğunu biliyorum, error_loging dizileri ve nesneler acı verici olabileceğinden, farklı türde verileri işlemek için birkaç sarmalayıcı işlevim var. Ayrıca, print_r() işlevinin kullanılması, <pre> dosyasında olmadığı zaman okumak zor olabilir. Hata kaydı için tj_log() ve çıktıyı göstermek için tj() var (temelde herhangi bir veri tipini önceden tanımlanabilir bir manorda gösterir:

function tj( $code ) {

    ?>
    <style>
        .tj_debug { Word-wrap: break-Word; white-space: pre; text-align: left; position: relative; background-color: rgba(0, 0, 0, 0.8); font-size: 11px; color: #a1a1a1; margin: 10px; padding: 10px; margin: 0 auto; width: 80%; overflow: auto; -moz-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -webkit-box-shadow:0 10px 40px rgba(0, 0, 0, 0.75); -moz-border-radius: 5px; -webkit-border-radius: 5px; text-shadow: none; }
    </style>
    <br /><pre class="tj_debug">

    <?php
    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        var_dump( $code );

    else :
        print_r( $code );

    endif;

    echo '</pre><br />';

}

function tj_log( $code ) {

    if ( is_null( $code ) || is_string($code) || is_int( $code ) || is_bool($code) || is_float( $code ) ) :
        $code = var_export( $code, true );

    else :
        $code = print_r( $code, true );

    endif;

    error_log( $code );

}

O zaman ben sadece yapıyorum: tj( $current_user ); ya da her neyse.

6
Joe Hoyle

Günlük dosyası yapmak için küçük bir sınıf yazdım, ajax çağrılarında hata ayıklama yaparken çok kullanışlıdır.

http://github.com/hunk/Magic-Fields/blob/master/tools/debug.php

Sadece şöyle bir şey yapman gerekiyor:

Hata ayıklama :: log ("Bu bir hata ayıklama mesajıdır");

Bu satır çalıştırıldığında, günlük dosyasına bir mesaj eklenir ve bundan sonra tail komutunu kullanabilirsiniz (eğer bazı unix'in stil işletim sistemini kullanıyorsanız)

kuyruk -f mylogfile.log

Bu işleve geçebilirseniz bir dizi veya bir nesneyi de.

note günlük dosyanızı kaydetmek istediğiniz bir yol için satır 20'yi değiştirmeniz gerekiyor

5
Gnuget

Çok sayıda IDE ile uğraştıktan sonra, ultra-özelleştirilmiş bir Sözdizimi Vurgulama renk şeması ile eski Notepad ++ 'a yerleştirdim.

Shift-Ctrl-X tuşlarına bastığımda imlecimin bulunduğu yerde aşağıdaki kod çıktı çıkacak şekilde ayarlanmış bir makro var:

echo "<pre>";
var_dump($);
echo "</pre>";
exit();

Çok basit, ancak böceklerimin% 90'ını bu makro artı WP_DEBUG etkinken yakalayabilirim.

5
SethMerrick

Linux'ta Aptane IDE ve Windows'ta UltraEdit kullanıyorum ve bunun da bir PHP ayrıştırıcısı var. Ayrıca, xDebug'daki tüm ipuçlarını WP_DEBUG içinde tanımlanmış wp-config.php sabiti ile görüntülüyorum.

Ayrıca bu konudaki gönderime bakın ve geliştirme araçlarınız hakkında yorum yapmaktan ve yorum yapmaktan çekinmeyin.

3
bueltge

O kadar da kötü değil: Eclipse PhpStorm + free'e yakın.

2
kaiser

FirePHP 'yi kontrol etmenizi öneririm. Firefox'un Firebug'a HTTP üstbilgileri üzerinden, genellikle daha temiz hata ayıklama çıktısı veren hata ayıklama bilgilerini gönderebilirsiniz.

2
Annika Backstrom

Tavsiye edebileceğim iki IDE var ve her ikisini de çok kullandım: PhpED (yalnızca Windows) ve PhpStorm + XDEBUG (Mac, Windows ve Linux.) Artık Mac kullanıyorum ikincisi.

İkisi de ROCK! PhpStorm’un Eylül 2010’dan önce 49 dolar, ondan sonra ise 99 dolar olduğu iyi bir haber. Windows'da olsaydım ve tekrar seçmek zorunda kalsaydım, hangisini seçeceğimi bilmiyorum.

Açıkçası yardım edemem ama bu iki araçtan birini kullanmayan herhangi bir eklenti geliştiricisinin özellikle WordPress eklentileri geliştirmek için nispeten yeniyse ciddi bir şekilde engellendiğini hissediyorum.

1
MikeSchinkel

Krumo - tarz php hata ayıklama sınıfı

Gerçekten güzel bir şey "krumo" php sınıfıdır. Dakikada uygulanır ve her tür değişkende hata ayıklamak için kolay bir yol sunar:

  • nesneler,
  • diziler,
  • dizeleri/şamandıra/tamsayı/vb.

Plus backtracing işlemine yardımcı olur, yüklü sınıfları veya içerdiği dosyaları ve talep edilen her şeyi gösterir.

Artı ÜCRETSİZDİR!

İndir

Krumo @sourceforge

1
kaiser

WordPress'in kapsamlı hata ayıklaması için Query Monitor , Query Monitor Extend ile birleşti , var dökümleri).

Ayrıca yayınlarla ilgili özel bilgi için Tüm Mesajlar Meta ve Tasarrufu Olan eklentilerini de kontrol edin.

0
Caleb

PHPStorm ve Xdebug, WordPress'in gelişimi için benim için değişen bir oyundur. Şimdi tavsiye ederim. Özellikle onların satır içi hata ayıklama araçları ile.

0

Ben phpED ve xdebug kullanıyorum ama benim için (ve başkası gibi görünüyor), eklentilerde veya tema dosyalarında hata ayıklamak mümkün değil! Hata ayıklayıcı, yalnızca ana veya orijinal "çekirdek" dosyalardaki kesme noktalarında durur! bana yardımcı olan var mı?

0
Kreker