2016-04-07 3 views
1

Ich bin ziemlich neu in PHP, also vergib mir, wenn es eine einfache Antwort darauf gibt. Ich habe in stackoverflow nach ähnlichen Fragen gesucht, konnte aber keine Hilfe finden.PHP - Objekte drucken, um eine Back-End-Funktion zu triggern/zu protokollieren

Ich arbeite an einer bestehenden php-basierten Anwendung, und ich muss einfach in der Lage sein, den Inhalt von Objekten und Arrays zu einem Protokoll oder einer Konsole für das Debuggen zu drucken. Der Haken dabei ist, dass die Funktion nicht direkt vom Client aufgerufen wird, sondern MySQL-Daten abruft, modifiziert und die Daten zurückgibt. Dies bedeutet, dass Optionen wie Chrome Logger (https://craig.is/writing/chrome-logger) und die Verwendung von console.log() in JavaScript nicht in der Konsole angezeigt werden.

Die Anwendung, für die ich arbeite, hat eine einfache Protokollfunktion, akzeptiert jedoch nur Zeichenfolgen. Ich bin nicht in der Lage, die Protokollfunktion zu ändern, und als solche Probleme beim Drucken von Objekten und Arrays, von denen ich keine Ahnung habe, was die Inhalte sind.

Hat jemand einen Rat, wie man in dieser Angelegenheit vorgeht?

Insbesondere versuche ich, die Ergebnisse der MySQL-Abfrage zu finden, also, wenn es eine Problemumgehung gibt, um diese Daten zu erhalten, würde das auch funktionieren.

Vielen Dank im Voraus!

+0

Haben Sie nicht überall, dass Sie könnte Ausgang ein 'print_r()' Ihres Arrays/object? Oder eine Möglichkeit zu überprüfen, ob Sie bei einem bestimmten Konto eingeloggt sind (vorausgesetzt, Sie speichern diese Informationen in '$ _SESSION' oder etwas), bevor Sie einfach' print_r() 'auf der Seite ausführen? –

+0

Wird das Skript mit AJAX aufgerufen? Sie können die Registerkarte "Netzwerk" der Entwicklertools verwenden, um die unformatierte AJAX-Antwort anzuzeigen, die alle Debugmeldungen enthält, die das Skript druckt. – Barmar

+0

@Barmar Das Skript verwendet AJAX, das Problem war, dass, da die Abfrage auf der Server-Seite statt der Client-Seite war, die gesamte Abfrage auf den Client versteckt ist und die Registerkarte Netzwerk keine Ergebnisse lieferte –

Antwort

2

Ich denke, Sie suchen nach http://php.net/manual/en/function.error-log.php oder Monolog, aber das löst nur die Hälfte der Frage. Sie müssen das Objekt auch zu etwas serialisieren, das in einem Protokoll dargestellt werden kann. Sie können PHP serialize, json encode oder die __toString-Methode verwenden, um dieses Ergebnis zu generieren. Siehe http://php.net/manual/en/language.oop5.magic.php für magische Methoden, die vielleicht nützlich sind.

+0

^Dies ist die beste Antwort, die ich finden konnte - Ich benutzte das Fehlerprotokoll und benutzte '_TJson()', um das Ergebnis zu drucken. Danke vielmals! –

+0

"Das ist die beste Antwort, die ich finden konnte" - Ich kann sehen, dass Sie hier neu sind. Bitte beachten Sie, dass die Annahme einer Antwort für andere Personen, die in Zukunft dieselbe Frage haben könnten, klar ist. – Mawg

1

Versuchen Sie, das Protokoll in eine Datei auf dem Server selbst zu schreiben.

file_put_contents ('log.txt', $ thelog, FILE_APPEND);

http://php.net/manual/en/function.file-put-contents.php

+0

Ich werde dies aufdrängen, weil es funktionieren wird, auch wenn es die Frage des OP nicht beantwortet. Ich stelle mir vor, dass er JS- und PHP-Ausgaben gemischt sehen möchte. – Mawg

+0

Danke Mawg für die Abstimmung.Aber die ursprüngliche Frage war eine "Back-End-Spur des PHP-Skripts". Ich erzählte nur, was ich manchmal getan habe. Es ist nicht die perfekte Lösung, aber eine schnelle Lösung. – blokeish

+0

Und eine Lösung, die ich selbst benutzt habe :-) bevor ich den Chrome Logger entdeckt habe - probiere es aus; Ich bin sicher, dass Sie es mögen werden – Mawg

Verwandte Themen