it-swarm.xyz

Как вы отлаживаете плагины?

Я довольно новичок в разработке плагинов и мне было трудно отлаживать.

Я использовал много эха, и это неряшливо и безобразно.

Я уверен, что есть лучший способ сделать это, возможно, IDE с отладчиком, с помощью которого я могу запустить весь сайт, включая плагин?

47
Sruly

Перейдите в wp-config.php и измените define('WP_DEBUG', false); на define('WP_DEBUG', true);. Кроме того, установите плагин Andrew Nacin Log Deprecated Notices .

21
John P Bloch

Если вы печатаете ошибки, то x-debug - это блестящее расширение PHP, которое добавляет современные трассировки в PHP.

Если вы пытаетесь понять, что происходит, когда нет ошибок, мой любимый подход - определить функцию, которая записывает свой вывод в файл. Поэтому я делаю plog ($ variable), и это появляется в файле журнала, который я затем могу просмотреть. Это особенно полезно, когда вы пытаетесь понять, что произошло до вызова header (), или в других ситуациях, когда вы не можете печатать в STDOUT.

12
tomdxw

Используйте xdebug + IDE NetBeans. После полной настройки - что легко сделать - вы можете установить точки останова в вашем плагине и наблюдать переменные в точках останова. Я думаю, что это лучший способ для отладки плагинов или любых приложений PHP в этом отношении.

10
Raj

Я отлаживаю по старинке, error_log()ing и var_dumping. Я считаю, что это самый эффективный способ для меня, у меня есть пара функций-оболочек для обработки различных типов данных, так как error_loging массивы и объекты могут быть проблемой. Кроме того, использование print_r() in может быть сложным для чтения, когда его нет в <pre>. У меня есть tj_log() для регистрации ошибок и tj() для отображения вывода (который в основном показывает любой тип данных в презентабельном mannor:

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 );

}

Итак, я просто делаю: tj( $current_user ); или что-то еще.

6
Joe Hoyle

Я написал небольшой класс для создания лог-файла, он очень полезен при отладке вызовов ajax.

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

Вам нужно только сделать что-то вроде:

Debug :: log ("Это сообщение отладки");

Когда эта строка будет выполнена, сообщение будет добавлено в файл журнала, и после этого вы сможете использовать команду tail (если вы используете операционную систему в стиле Unix)

tail -f mylogfile.log

Если вы можете передать в эту функцию массив или объект, а также.

примечание вам нужно изменить строку 20 для пути, где вы хотите сохранить свой файл журнала

5
Gnuget

После работы с несколькими средами разработки, я остановился на старом старом Notepad ++ с ультра-настроенной цветовой схемой подсветки синтаксиса.

У меня есть макрос, настроенный так, что когда я нажимаю Shift-Ctrl-X, следующий код получает вывод, где находится мой курсор:

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

Это просто, но я могу, как правило, выслеживать 90% моих ошибок с помощью этого макроса плюс WP_DEBUG.

5
SethMerrick

Я использую Aptane IDE в Linux и UltraEdit в Windows, и у этого также есть PHP-парсер. Также я просматриваю все подсказки из xDebug с константой WP_DEBUG, определенной в wp-config.php.

Смотрите также мой пост на эту тему и не стесняйтесь комментировать и давать отзывы о ваших инструментах разработки.

3
bueltge

Не так уж и плохо: Затмение Это близко к PhpStorm + бесплатно.

2
kaiser

Я рекомендую проверить FirePHP . Вы можете отправлять отладочную информацию в Firebug Firefox через HTTP-заголовки, что обычно обеспечивает более чистый вывод отладочной информации.

2
Annika Backstrom

Есть две IDE, которые я могу порекомендовать, и я широко использовал обе: PhpED (только для Windows) и PhpStorm + XDEBUG (Mac, Windows и Linux.) Я сейчас на Mac, поэтому могу использовать только последний.

Оба из них рок! Хорошая новость в том, что PhpStorm составляет 49 долларов до сентября 2010 года и только 99 долларов после этого. Если бы я был на Windows и должен был выбрать снова, не уверен, что я выбрал бы.

Честно говоря, я не могу не чувствовать, что любой разработчик плагинов, не использующий один из этих двух инструментов, серьезно ограничен, особенно если они относительно новы в разработке плагинов WordPress.

1
MikeSchinkel

Krumo - стилизованный класс отладки php

Еще одна хорошая вещь - класс php "krumo". Он реализован за ½ минуты и предлагает простой способ отладки всех видов переменных:

  • объекты,
  • массивы,
  • строки/поплавковый/число/и т.д..

Плюс это помогает с возвратом, показывает загруженные классы или включенные файлы и все по требованию.

Плюс БЕСПЛАТНО!

Скачать

Крумо @sourceforge

1
kaiser

Сначала я добавляю define('WP_DEBUG', false); в файл wp-config.php (как говорили многие люди) в мою локальную установку, которая является последней копией соответствующего рабочего сайта (как файлов, так и данных). Это делает материал быстрым, безопасным, отдельным, но хорошо отражает хотя бы одно место, где плагин будет фактически использоваться.

Я также добавляю плагин Debug Bar вместе с некоторыми из некоторых надстроек панели отладки (переходные процессы, например) - в зависимости от ваших плагинов.

Я также использую надстройку Firebug для Firefox, которая отлично помогает отслеживать проблемы HTML, CSS и JavaScript, а также хорошо смотрится на странности макета.

Я пишу код с помощью UltraEdit, который я использую более 15 лет для целого ряда кодов (php через SQL) как на работе, так и дома, и это хорошо работает для меня, но, возможно, мне не хватает того, чтобы оценить как IDE для многих людей. Он имеет подсветку синтаксиса, автоматическое завершение и функции разметки кода, а также набор инструментов быстрого вызова html и css, которые могут помочь избежать опечаток и тому подобного. В основном это приносит мне знакомство, которое является важным аспектом, который часто упускается из Rush к новому. Мышечная память способствует повторяемости даже при кодировании.

И, конечно, у меня обычно есть какая-то подходящая страница из кодекса, открытая в другой вкладке на подходящем образце.

Все они по-разному помогают выделить ошибки кодирования, разбора, функциональности и компоновки и не сильно влияют на то, как я пишу код, или, если ничего не происходит. Большинство из них можно на время игнорировать или деактивировать, если вы экспериментируете или работаете над чем-то, к чему вы вернетесь позже.

О, и нет ничего плохого в хорошо позиционированном echo или print_r для проверки чего-либо на ключе (если вы удалите их, когда закончите).

0
Lunc

Извлечь Query Monitor в сочетании с Query Monitor Extend для комплексной отладки WordPress (ошибки/уведомления/ограничения/предупреждения PHP, запросы к базе данных, пути, константы, HTTP-запросы, переходные процессы, переменные сеанса, дампы переменных) ,.

Также проверьте All Meta Meta и Saving What plugins для конкретной информации о сообщениях.

0
Caleb

PHPStorm и Xdebug - это меняющаяся игра для разработки на WordPress. Очень рекомендую сейчас. Специально с их встроенными средствами отладки.

0
Emanuel Rocha Costa

Я использую phpED и xdebug, но для меня (и, кажется, для кого-то еще) невозможно отладить плагины или файл темы! Отладчик останавливается только на точках останова, которые находятся в основных или оригинальных "базовых" файлах! кто-нибудь может мне помочь?

0
Kreker