411 Stimmen

Wie kann ich in PHP in die Konsole schreiben?

Ist es möglich, einen String zu schreiben oder in die Konsole zu protokollieren?

Was ich meine

Genau wie in JSP, wenn wir etwas drucken wie system.out.println("some") Wenn Sie eine Seite auswählen, wird sie in der Konsole angezeigt, nicht auf einer Seite.

33voto

bueltge Punkte 2094

Wie der Autor der verlinkten Webseite in die beliebte Antwort Ich möchte meine letzte Version dieser einfachen Hilfsfunktion hinzufügen. Sie ist viel solider.

Ich benutze json_encode() um zu prüfen, ob der Variablentyp unnötig ist, und einen Puffer hinzuzufügen, um Probleme mit Rahmenwerken zu lösen. Es nicht eine solide Rückkehr oder übermäßige Verwendung von 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;
}

Verwendung

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

Screenshot des Ergebnisses

Auch ein einfaches Beispiel als Bild, um es viel leichter zu verstehen:

Enter image description here

23voto

0DAYanc Punkte 337
$variable = "Variable";
echo "<script>console.log('$variable');</script>";

Interaktion mit PHP und JavaScript.

20voto

Pankaj Bisht Punkte 896

Ich denke, es kann verwendet werden

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 String
jsLogs("testing string"); #PHP: testing string

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

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

20voto

Neo Punkte 709
echo 
"<div display='none'>
    <script type='text/javascript'>
        console.log('console log message');
    </script>
</div>";

Erzeugt eine

<div>

mit dem

display="none"

so dass das div nicht angezeigt wird, sondern die

console.log()

Funktion wird in Javascript erstellt. Sie erhalten also die Meldung in der Konsole.

15voto

Klompenrunner Punkte 653

Einige großartige Antworten, die mehr Tiefe verleihen; aber ich brauchte etwas Einfacheres und mehr wie das JavaScript console.log() Befehl.

Ich verwende PHP in vielen Ajax-Anwendungen, in denen ich Daten sammle und in XML umwandle. Das JavaScript console.log funktioniert in diesem Fall nicht; es bricht die XML-Ausgabe.

Xdebug, etc. hatten ähnliche Probleme.

Meine Lösung unter Windows:

  • Einrichten einer .txt Datei, die einigermaßen leicht zu erreichen und beschreibbar ist
  • Einstellen der PHP error_log Variable in der .ini Datei, um in diese Datei zu schreiben
  • Öffnen Sie die Datei in Windows Datei-Explorer und öffnen Sie ein Vorschaufenster für sie
  • Verwenden Sie die error_log('myTest'); PHP-Befehl zum Senden von Nachrichten

Diese Lösung ist einfach und erfüllt in den meisten Fällen meine Anforderungen. Standard-PHP, und das Vorschaufenster wird jedes Mal automatisch aktualisiert, wenn PHP darin schreibt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X