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


49

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

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

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


1
Я не видел IDE, которая полностью запускает WordPress внутри IDE ... хотя это было бы здорово. Я отлаживаю плагины, запускаю WAMP локально и кодирую в Dreamweaver. Если вы установите WP_DEBUGзначение false, как рекомендует Джон, тогда вы получите довольно хорошее представление о том, что идет не так, как надо, в ваших сценариях. Затем вы можете отредактировать в Dreamweaver, нажать Ctrl + S, а затем F5 в браузере, чтобы сразу же просмотреть изменения.
EAMann

1
@EAMann - Обязательно ознакомьтесь с PhpEd (для Windows) и PhpStorm + XDEBUG (для Mac, Linux и Windows).
MikeSchinkel

Ответы:


21

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


12
Я также ознакомился с другой статьей Нацина
kevtrout

С PHP 5.4+ вы, вероятно, будете завалены уведомлениями E_STRICT. Перетащите этот список в папку плагинов и активируйте, чтобы удалить строгие уведомления, отключите, чтобы вернуться к обычному сервису.
webaware

12

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

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


10

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


6

Я отлаживаю старомодным способом, error_log()размышляя и var_dumpосуждая. Я считаю, что это самый эффективный способ для меня, у меня есть пара функций-оболочек для обработки различных типов данных, так error_logкак использование массивов и объектов может быть проблемой. Кроме того, использование 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 );или как угодно.


5

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

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

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

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


2
Хороший ход. Горячие клавиши клавиатуры в редакторах рок!
2010 года

1
Я предпочитаю вывод данных print_r($var, true)вместо var_dump.
brasofilo

5

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

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

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

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

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

tail -f mylogfile.log

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

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


3

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

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


2

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



1

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

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

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


1

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

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

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

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

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

Скачать

Крумо @sourceforge


0

Я использую плагин LogPress стоимостью 13 долларов, который вы можете купить на ThemeForest, и это абсолютная посылка. Вы можете отлаживать все, что касается их плагинов и сайта. Поддерживает ведение журнала консоли Firebug и многое другое. Я не могу жить без него, вот почему я использую этот плагин.

Этот плагин, вероятно, лучшие деньги, которые я когда-либо тратил, и он сэкономил бесчисленные часы в моей разработке плагина Wordpress.


Ух ты, я был недоволен тем, что рекомендовал платный плагин, с которым у меня нет никакой связи? Это немного неуклюже, не так ли?
Дуэйн Чаррингтон

Я не тот, кто голосует вниз, но я не удивлен. Вы используете слова, как будто вы пытаетесь продать плагин. Рекомендовать вещи - это хорошо, но настойчиво продавать, как «абсолютная Боже». Люди ненавидят рекламу. Просто понизьте язык, и рекомендация будет говорить сама за себя.
icc97

0

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


0

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

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

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

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

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

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

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


0

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

Также проверьте плагины All Post Meta и Saving What для получения конкретной информации о постах.


0

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


Как вы это настроили?
jgraup

Просто зайдите на их справочный сайт: jetbrains.com/help/phpstorm/2016.2/configuring-xdebug.html
Эмануэль Роша Коста,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.