Как я могу написать на консоль в PHP? - PullRequest
274 голосов
/ 01 декабря 2010

Можно ли написать строку или войти в консоль?

Что я имею в виду

Так же, как в jsp, если мы напечатаем что-то вроде system.out.println("some"), оно будет там на консоли, а не встр.

Ответы [ 23 ]

337 голосов
/ 22 ноября 2013

Или вы используете трюк с этого сайта Отладка PHP на консоли

Сначала вам понадобится небольшая вспомогательная функция PHP

function debug_to_console( $data ) {
    $output = $data;
    if ( is_array( $output ) )
        $output = implode( ',', $output);

    echo "<script>console.log( 'Debug Objects: " . $output . "' );</script>";
}

Затем вы можете использовать ее какthis

debug_to_console( "Test" );

Это создаст выходной сигнал, подобный этому:

Debug Objects: Test
133 голосов
/ 01 декабря 2010

Firefox

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

Chrome

Однако, если вы используете Chrome, есть инструмент отладки PHP под названием Chrome Logger или webug (у webug есть проблемы с порядком журналов).

В последнее время Clockwork находится в активной разработке, которая расширяет Инструменты разработчика, добавляя новую панель для предоставления полезной информации об отладке и профилировании. Он обеспечивает готовую поддержку Laravel 4 и Slim 2 , а также может быть добавлена ​​поддержка через его расширяемый API.

Использование Xdebug

Лучший способ отладки вашего PHP будет через Xdebug . Большинство браузеров предоставляют вспомогательные расширения, которые помогут вам передать необходимую строку cookie / запроса для инициализации процесса отладки.

62 голосов
/ 05 февраля 2014

Если вы ищете простой подход, введите JSON:

<script>
    console.log(<?= json_encode($foo); ?>);
</script>
35 голосов
/ 01 декабря 2010

По умолчанию все выходные данные отправляются на stdout, который является HTTP-ответом или консолью, в зависимости от того, запускается ли ваш скрипт Apache или вручную в командной строке.Но вы можете использовать error_log для регистрации и различные потоки ввода / вывода можно записать с помощью fwrite.

34 голосов
/ 11 марта 2014

Попробуйте это работает:

echo("<script>console.log('PHP: ".$data."');</script>");
17 голосов
/ 13 августа 2017
echo 
"<div display='none'>
    <script type='text/javascript'>
        console.log('console log message');
    </script>
</div>";

Создает

<div>

с

display="none"

чтобы div не отображался, а

console.log()

функция создана в JavaScript. Таким образом, вы получите сообщение в консоли.

16 голосов
/ 15 мая 2015

Я думаю, что это можно использовать -

function jsLogs($data) {
    $html = "";
    $coll;

    if (is_array($data) || is_object($data)) {
        $coll = json_encode($data);
    } else {
        $coll = $data;
    }

    $html = "<script>console.log('PHP: ".$coll."');</script>";

    echo($html);
    # exit();
}

# For Array
jsLogs(array("test1", "test2")); # PHP: ["test1","test2"]

# For Object
jsLogs(array("test1"=>array("subtest1", "subtest2"))); #PHP: {"test1":["subtest1","subtest2"]}

# For String
jsLogs("testing string"); #PHP: testing string
15 голосов
/ 13 мая 2016

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

Я использую json_encode() длясделайте проверку на необязательный тип var и добавьте также буфер для решения проблем с фреймворками, у которых нет твердого возврата или чрезмерного использования header().

/**
 * Simple helper to debug to the console
 *
 * @param $data object, array, string $data
 * @param $context string  Optional a description.
 *
 * @return string
 */
function debug_to_console( $data, $context = 'Debug in Console' ) {

    // Buffering to solve problems frameworks, like header() in this and not a solid return.
    ob_start();

    $output  = 'console.info( \'' . $context . ':\' );';
    $output .= 'console.log(' . json_encode( $data ) . ');';
    $output  = sprintf( '<script>%s</script>', $output );

    echo $output;
}

Использование

// $data is the example var, object; here an array.
$data = [ 'foo' => 'bar' ];
debug_to_console( $data );`

Снимок экрана с результатом

Также простой пример в виде изображения для понимания гораздо проще.

enter image description here

14 голосов
/ 21 апреля 2015

Несколько замечательных ответов, которые добавляют больше глубины; но мне нужно было нечто более простое и более похожее на команду JS console.log().

Я использую PHP во многих случаях «сбора данных и превращения в xml» в приложении AJAX. JS console.log в этом случае не работает; это нарушает вывод XML. (Может, у кого-то есть решение для этого?)

У Xdebug и др. Были похожие проблемы.

Мое решение в Windows:

  • Настройка .txt файла, который довольно легко получить и записать
  • Установите переменную PHP error_log в файле .ini для записи в этот файл
  • Откройте файл в проводнике Windows и откройте для него панель предварительного просмотра
  • Используйте команду PHP error_log('myTest'); для отправки сообщений

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

11 голосов
/ 15 мая 2015

Я считаю это полезным:

function console($data, $priority, $debug)
{
    if ($priority <= $debug)
    {
        if (is_array($data))
            $output = '<script>console.log("' . str_repeat(" ", $priority-1) . implode( ",", $data) . '");</script>';
        else
            $output = '<script>console.log("' . str_repeat(" ", $priority-1) . $data . '");</script>';

        echo $output;
    }
}

И используйте его как:

<?php
$debug = 5; // All lower and equal priority logs will be displayed
console('Important' ,1 , $debug);
console('Less Important' ,2 , $debug);
console('Even Less Important' ,5 , $debug);
console('Again Important' ,1 , $debug);
?>

Какие выходы в консоли:

Important
 Less Important
     Even Less Important
Again Important

И вы можете отключить менее важные журналы, ограничив их с помощью значения $ debug

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...