Як ви налагоджуєте плагіни?


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);. Крім того, встановіть плагін Андрія Нацина " Журнал застарілих повідомлень" .


12
Я також ознайомлюся з іншою статтею Nacin
kevtrout

З PHP 5.4+ ви, ймовірно, буде завалені повідомленнями E_STRICT. Видаліть цю суть у папку плагінів та активуйте, щоб видалити суворі сповіщення, деактивуйте, щоб повернутися до звичайної служби.
webaware

12

Якщо ви друкуєте помилки, то x-debug - це блискуче розширення PHP, яке додає PHP сучасних зворотних зв'язків.

Якщо ви намагаєтеся розібратися, що відбувається там, де немає помилок, мій улюблений підхід - це визначити функцію, яка записує свій вихід у файл. Тож я роблю plog ($ змінна), і це з'являється у файлі журналу, який я потім можу перевірити. Це особливо корисно, коли ви намагаєтеся розібратися у тому, що сталося перед викликом заголовка (), або в інших ситуаціях, коли ви не можете надрукувати на STDOUT.


10

Використовуйте xdebug + NetBeans IDE. Коли повністю налаштовано - що легко зробити - ви можете встановити точки розриву у своєму плагіні та спостерігати за змінними в точках перерви. Я думаю, що це найкращий спосіб налагодити плагіни або будь-які програми PHP з цього приводу.


6

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

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 я влаштувався у звичайний старий Блокнот ++ із ультрамодифікованою кольоровою схемою підсвічування синтаксису.

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

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

Це просто, але я, як правило, вишукую 90% моїх помилок за допомогою цього макроса плюс WP_DEBUG.


2
Гарний хід. Клавіші швидкого доступу в редакторах рок!
хакре

1
Я віддаю перевагу результату, що дається print_r($var, true)замість var_dump.
brasofilo

5

Я написав невеликий клас для створення журналу файлів, дуже корисний, коли ви налагоджуєте дзвінки ajax.

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

Вам потрібно лише зробити щось на кшталт:

Debug :: log ("Це повідомлення про налагодження");

Коли цей рядок виконаний, у файл журналу буде додано повідомлення, після чого ви можете використовувати команду хвоста (якщо ви використовуєте деяку операційну систему стилю Unix)

хвіст -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

Ще одна справді приємна річ - це "krumo" php-клас. Він реалізований за ½ хв і пропонує простий спосіб налагодження всіх видів змінних:

  • об'єкти,
  • масиви,
  • рядки / float / integer / тощо.

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

Плюс це БЕЗКОШТОВНО!

Завантажити

Крумо @sourceforge


0

Я використовую плагін $ 13 під назвою LogPress, який ви можете придбати на ThemeForest, і це абсолютна передача Бога. Ви можете налагодити все, що стосується їх плагінів та веб-сайту. Підтримується реєстрація консолі Firebug та багато іншого. Я не можу жити без цього, саме стільки я використовую цей плагін.

Цей плагін - це, мабуть, найкращі гроші, які я коли-небудь витратив, і це заощадило незліченну кількість годин на моїй розробці плагінів Wordpress.


Нічого собі, мене не рекомендували за те, що я рекомендував платний плагін, з яким я ні з чим не асоціювався? Це трохи важко невдало це?
Дуейн Чаррінгтон

Я не той, хто голосує проти, але я не здивований. Ви використовуєте слова так, ніби намагаєтесь продати плагін. Рекомендувати речі добре, але наполегливо продавати на кшталт "абсолютного відправки Бога". Люди ненавидять рекламу. Просто замовте мову і рекомендація буде говорити сама за себе.
icc97

0

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


0

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

Я також додаю плагін " Налагодження панелі" разом із деякими доповненнями до панелі налагодження (наприклад, перехідними періодами) - у відповідності до ваших плагінів.

Я також використовую надбудову Firebug для Firefox, яка чудово допомагає відстежувати проблеми html, css та JavaScript, а також добре шукати дивацтва у макеті.

Я кодую за допомогою UltraEdit, який я використовував протягом 15 років протягом цілого ряду кодування (php через SQL) як на роботі, так і вдома, тому це для мене добре працює, але, можливо, не вистачає мені, щоб оцінити його як IDE багато людей. Він має підсвічування синтаксису, функції автоматичного завершення та компонування коду та купу інструментів швидкого доступу до HTML та css, які допоможуть уникнути помилок друку та подібного. Переважно це приносить мені знайомство, важливий аспект, який часто не помічається в поспіху до нового. М’язова пам’ять сприяє повторюваності навіть при кодуванні.

І звичайно у мене зазвичай є якась відповідна сторінка з кодексу, відкрита на іншій вкладці на відповідному прикладі.

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

Ну, і немає нічого поганого в добре розташованому ехо або print_r, щоб перевірити щось під ключ (до тих пір, поки ви видалите їх, коли закінчите).


0

Ознайомтеся з монітором запитів у поєднанні з розширенням запиту монітора для всебічної налагодження WordPress (помилки / повідомлення / PHP помилки / попередження, запити бази даних, шляхи, константи, HTTP запити, перехідні періоди, змінні сеансу, вар-дамп).

Ознайомтеся також з усіма мета-повідомленнями та збереженням плагінів для отримання конкретної інформації про пости.


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.