Czy można napisać ciąg lub zalogować się do konsoli?
Co miałem na myśli
Podobnie jak w JSP, jeśli wydrukujemy coś takiego system.out.println("some")
, będzie tam na konsoli, a nie na stronie.
Firefox
W przeglądarce Firefox można użyć rozszerzenia o nazwie FirePHP, które umożliwia rejestrowanie i zrzut informacji z aplikacji PHP na konsolę. Jest to dodatek do niesamowitego rozszerzenia do projektowania stron internetowych Firebug .
Chrom
Jeśli jednak używasz Chrome, istnieje narzędzie do debugowania PHP o nazwie Chrome Logger lub webug (webug ma problemy z kolejnością dzienników).
Ostatnio Clockwork jest w fazie rozwoju, która rozszerza Narzędzia programistyczne, dodając nowy panel, który zapewnia przydatne informacje dotyczące debugowania i profilowania. Zapewnia natychmiastowe wsparcie dla Laravel 4 i Slim 2, a wsparcie można dodać za pomocą rozszerzalnego interfejsu API.
Korzystanie z Xdebug
Lepszym sposobem na debugowanie PHP jest Xdebug . Większość przeglądarek zapewnia rozszerzenia pomocnicze, które pomagają przekazać wymagany ciąg cookie / ciąg zapytania w celu zainicjowania procesu debugowania.
Lub wykorzystujesz sztuczkę z PHP Debuguj do konsoli .
Najpierw potrzebujesz małej funkcji pomocnika PHP
Następnie możesz użyć tego w następujący sposób:
Spowoduje to utworzenie takiego wyniku:
źródło
"Debug Objects: " . $data . ""
$data
pojawi się na wyjściu, oznacza to, że funkcja nie została wpisana dokładnie tak, jak pokazano. Przyjrzyj się dokładnie pojedynczym i podwójnym cudzysłowom, aby upewnić się, że pasują one do powyższego kodu.$data
jest zmienną php; do czasu wysłania strony do przeglądarki ta zmienna php zostanie zastąpiona parametrem przekazanym dodebug_to_console
. Przeglądarka nigdy nie powinna widzieć$data
. (Jeśli spojrzysz napage source
przeglądarkę, nie powinno powiedzieć$data
.)Jeśli szukasz prostego podejścia, wykonaj echo jako JSON:
źródło
function debug_log( $object=null, $label=null ){ $message = json_encode($object, JSON_PRETTY_PRINT); $label = "Debug" . ($label ? " ($label): " : ': '); echo "<script>console.log(\"$label\", $message);</script>"; }
Domyślnie wszystkie dane wyjściowe są przekazywane do
stdout
, czyli odpowiedzi HTTP lub konsoli, w zależności od tego, czy skrypt jest uruchamiany przez Apache, czy ręcznie w wierszu polecenia. Ale można używaćerror_log
do rejestrowania i różnych strumieni I / O może być zapisanych do zfwrite
.źródło
error_log
potrzebowałem danych wyjściowych do terminala z wbudowanego serwera PHPSpróbuj wykonać następujące czynności. To działa:
źródło
Tworzy a
z
aby div nie był wyświetlany, ale
funkcja jest tworzona w javascript. Otrzymujesz wiadomość w konsoli.
źródło
div
. jeśli masz tylko<script>
blok, nic nie będzie wyświetlane w przeglądarce.json.encode
znaki cudzysłowu nie przerywały linii kodu. Na przykład:echo "<script>console.log(".json_encode($msg).")</script>";
Jako autor połączonej strony w popularnej odpowiedzi , chciałbym dodać moją ostatnią wersję tej prostej funkcji pomocnika. Jest o wiele bardziej solidny.
Używam,
json_encode()
aby sprawdzić, czy typ zmiennej nie jest konieczny, a także dodać bufor, aby rozwiązać problemy z frameworkami. Nie ma stałego zwrotu ani nadmiernego wykorzystaniaheader()
.Stosowanie
Zrzut ekranu wyniku
Również prosty przykład jako obraz, aby zrozumieć to znacznie łatwiej:
źródło
Myślę, że można go użyć -
źródło
Kilka świetnych odpowiedzi, które dodają więcej głębi; ale potrzebowałem czegoś prostszego i bardziej podobnego do JavaScript
console.log()
polecenia .Używam PHP do „zbierania danych i przekształcania w XML” w aplikacjach Ajax. W takim przypadku JavaScript
console.log
nie działa; psuje wyjście XML.Xdebug itp. Miał podobne problemy.
Moje rozwiązanie w systemie Windows:
.txt
plik, który jest dość łatwy do zdobycia i do zapisuerror_log
zmienną PHP w.ini
pliku, aby zapisać do tego plikuerror_log('myTest');
polecenia PHP, aby wysyłać wiadomościTo rozwiązanie jest proste i przez większość czasu spełnia moje potrzeby. Standardowe PHP, a okienko podglądu aktualizuje się automatycznie za każdym razem, gdy PHP do niego pisze.
źródło
json_encode
również rozwiązałoby problem? Jeśli tak, być może znaki cudzysłowu w komunikacie zakłócają znaki cudzysłowu w skrypcie. (na przykładecho "<script>console.log(".json_encode($msg).")</script>";
:). Jeśli nie, jestem ciekawy, jaki był problem, który spowodował uszkodzenie skryptu console.log i jak / dlaczego twoje rozwiązanie to rozwiązało. Twoje rozwiązanie jest dobre - próbuję tylko dowiedzieć się więcej na temat warunków, które spowodowałyconsole.log
lub uszkodzenie wyjścia xml. W wielu przypadkach rejestr błędów jest znacznie lepszy niż szybkiconsole.log
.Interakcja PHP i JavaScript.
źródło
Uważam to za pomocne:
I używaj go w następujący sposób:
Które wyjścia w konsoli:
Możesz wyłączyć mniej ważne dzienniki, ograniczając je przy użyciu wartości $ debugowania.
źródło
console('Even Less Important' ,6 , $debug);
, nie będzie to wyświetlane w konsoli? dlaczego tak? jest coś powyżej 5 nie jest wyświetlane$output = '<script>console.log("' . str_repeat(" ", $priority-1)
i. '");</script>';
. Tylkoimplode(",", $data)
i$data
jest inny.Krótkie i łatwe, do tablic, ciągów znaków, a także obiektów.
źródło
źródło
Jeśli chcesz pisać do pliku dziennika PHP, a nie do konsoli JavaScript, możesz użyć tego:
error_log("This is logged only to the PHP log")
Odniesienie: dziennik błędów
źródło
W przeglądarce Chrome jest rozszerzenie o nazwie Chrome Logger, umożliwiające rejestrowanie wiadomości PHP.
Firefox DevTools ma nawet zintegrowaną obsługę protokołu Chrome Logger .
Aby włączyć rejestrowanie, wystarczy zapisać plik „ChromePhp.php” w swoim projekcie. Następnie można go użyć w następujący sposób:
Przykład pochodzi ze strony GitHub .
Dane wyjściowe mogą wyglądać następująco:
źródło
"ccampbell/chromephp": "*"
Istnieje również świetne rozszerzenie Google Chrome, konsola PHP , z biblioteką PHP, która pozwala:
error file:line
edytora tekstu.źródło
Szukałem sposobu debugowania kodu we wtyczce WordPress, którą opracowywałem i natknąłem się na ten post.
Wziąłem fragmenty kodu, które są dla mnie najbardziej odpowiednie, z innych odpowiedzi i połączyłem je w funkcję, której mogę użyć do debugowania WordPress. Funkcja to:
Użycie jest następujące:
Jeśli ta funkcja jest używana z programowaniem WordPress, należy ją umieścić w
functions.php
pliku motywu potomnego, a następnie można wywołać w dowolnym miejscu kodu.źródło
Porzuciłem wszystkie powyższe na rzecz Debuggera i Loggera . Nie mogę tego wystarczająco pochwalić!
Wystarczy kliknąć jedną z kart w prawym górnym rogu lub „kliknij tutaj”, aby rozwinąć / ukryć.
Zwróć uwagę na różne „kategorie”. Możesz kliknąć dowolną tablicę, aby ją rozwinąć / zwinąć.
Ze strony internetowej
źródło
Od 2017 roku Firebug, a więc i FirePHP, został wyłączony .
Napisałem kilka drobnych modyfikacji w narzędziu ChromePHP, aby umożliwić płynną migrację z FirePHP do Firebug w celu debugowania za pośrednictwem konsoli.
W tym artykule wyjaśniono w łatwych krokach
Migracja z FirePHP do ChromePHP w 5 minut (bez zerwania istniejącego kodu)
źródło
W przypadku wywołań Ajax lub odpowiedzi XML / JSON, w których nie chcesz zadzierać z treścią, musisz wysłać dzienniki przez nagłówki HTTP, a następnie dodać je do konsoli za pomocą rozszerzenia internetowego. W ten sposób FirePHP (nie jest już dostępny) i QuantumPHP (rozwidlenie ChromePHP) robią to w Firefox.
Jeśli masz cierpliwość, x-debugowanie jest lepszą opcją - masz głębszy wgląd w PHP, z możliwością wstrzymania skryptu, sprawdzenia, co się dzieje, a następnie wznowienia skryptu.
źródło
Mogę się spóźnić na imprezę, ale szukałem implementacji funkcji logowania, która:
console.log()
,console.log()
.Dane wyjściowe wyglądają tak:
(Poniższy fragment kodu jest testowany na php
7.2.11
. Nie jestem pewien jego zgodności wstecznej z php. Może to stanowić problem również dla javascript (w terminach starych przeglądarek), ponieważ tworzy on przecinek poconsole.log()
argumentach - co nie jest legalne doES 2017
.)źródło
Każdy z tych dwóch działa:
źródło
Oto moje rozwiązanie, dobrą rzeczą jest to, że możesz przekazać tyle parametrów, ile chcesz.
Nazwij to w ten sposób
Teraz powinieneś być w stanie zobaczyć wyjście w konsoli, szczęśliwego kodowania :)
źródło
Posługiwać się:
źródło
Oto przydatna funkcja. Jest bardzo prosty w użyciu, pozwala przekazywać dowolną liczbę argumentów dowolnego rodzaju i wyświetla zawartość obiektu w oknie konsoli przeglądarki tak, jakbyś wywołał console.log z JavaScript - ale z PHP
Uwaga: możesz także używać tagów, przekazując „TAG-YourTag”, i będzie on stosowany, dopóki nie zostanie odczytany inny tag, na przykład „TAG-YourNextTag”
UWAGA: func_num_args () i func_num_args () to funkcje PHP do odczytu dynamicznej liczby argumentów wejściowych i pozwalają tej funkcji na nieskończenie wiele żądań console.log z jednego wywołania funkcji.
źródło
Chociaż to stare pytanie, szukałem tego. Oto moja kompilacja niektórych rozwiązań, na które odpowiedziano tutaj, i kilka innych pomysłów znalezionych gdzie indziej, aby uzyskać rozwiązanie uniwersalne.
KOD :
TESTY I UŻYTKOWANIE:
Użycie jest proste. Uwzględnij pierwszą funkcję ręcznego wysyłania do konsoli. Użyj drugiej funkcji do przekierowywania obsługi wyjątków php. Poniższy test powinien dać pomysł.
OBJAŚNIENIE:
Funkcja
console($data, $is_error, $file, $fn)
przyjmuje ciąg lub tablicę jako pierwszy argument i umieszcza go na konsoli za pomocą wstawek js.Drugi argument to flaga odróżniająca zwykłe dzienniki od błędów. W przypadku błędów dodajemy detektory zdarzeń, aby informować nas za pośrednictwem alertów o wystąpieniu błędów, a także wyróżniać w konsoli. Ta flaga ma domyślną wartość false.
Trzeci i czwarty argument to jawne deklaracje numerów plików i linii, które są opcjonalne. Jeśli ich nie ma, domyślnie używają predefiniowanej funkcji php,
debug_backtrace()
aby je dla nas pobrać.Następna funkcja
exceptions_to_console($svr, $str, $file, $ln)
ma cztery argumenty w kolejności wywoływanej przez domyślną procedurę obsługi wyjątków php. Tutaj pierwszym argumentem jest dotkliwość, którą dodatkowo sprawdzamy za pomocą predefiniowanych stałych za pomocą funkcji,severity_tag($code)
aby dostarczyć więcej informacji o błędzie.OGŁOSZENIE :
Powyższy kod używa funkcji i metod JS, które nie są dostępne w starszych przeglądarkach. Aby zachować zgodność ze starszymi wersjami, wymaga wymiany.
Powyższy kod służy do testowania środowisk, w których tylko Ty masz dostęp do witryny. Nie używaj tego w witrynach na żywo (produkcyjnych).
PROPOZYCJE :
Pierwsza funkcja
console()
rzuciła pewne uwagi, więc zawinąłem je w inną funkcję i nazwałem ją za pomocą operatora kontroli błędów „@”. Można tego uniknąć, jeśli nie przeszkadza ci zawiadomienie.Co więcej, pojawiające się alerty mogą być denerwujące podczas kodowania. W tym celu używam tego sygnału dźwiękowego (znalezionego w rozwiązaniu: https://stackoverflow.com/a/23395136/6060602 ) zamiast alertów wyskakujących. Jest całkiem fajny, a możliwości są nieograniczone, możesz grać w swoje ulubione utwory i sprawić, że kodowanie będzie mniej stresujące.
źródło