dengan
display="none"
sehingga div tidak ditampilkan, tetapi
console.log()
fungsi dibuat dalam javascript. Jadi, Anda mendapatkan pesan di konsol.
Sebagai penulis laman web tertaut dalam jawaban populer , saya ingin menambahkan versi terakhir dari fungsi pembantu sederhana ini. Itu jauh lebih solid.
Saya gunakan json_encode()
untuk melakukan pengecekan jika tipe variabel tidak diperlukan dan juga menambahkan buffer untuk menyelesaikan masalah dengan framework. Tidak ada pengembalian yang solid atau penggunaan berlebihan 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('', $output);
echo $output;
}
Pemakaian
// $data is the example variable, object; here an array.
$data = [ 'foo' => 'bar' ];
debug_to_console($data);`
Tangkapan layar hasilnya
Juga contoh sederhana sebagai gambar untuk memahaminya lebih mudah:
Saya pikir itu bisa digunakan -
function jsLogs($data) {
$html = "";
$coll;
if (is_array($data) || is_object($data)) {
$coll = json_encode($data);
} else {
$coll = $data;
}
$html = "";
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"]}
Beberapa jawaban bagus yang menambah kedalaman; tetapi saya membutuhkan sesuatu yang lebih sederhana dan lebih mirip dengan console.log()
perintah JavaScript .
Saya menggunakan PHP di banyak "pengumpulan data dan berubah menjadi XML" di aplikasi Ajax. JavaScript console.log
tidak berfungsi dalam hal ini; itu merusak output XML.
Xdebug, dll. Memiliki masalah serupa.
Solusi saya di Windows:
- Setup
.txt
file yang agak mudah untuk
diakses dan ditulis - Atur
error_log
variabel PHP di.ini
file untuk menulis ke file itu - Buka file di Windows File Explorer dan buka panel pratinjau untuk itu
- Gunakan
error_log('myTest');
perintah PHP untuk mengirim pesan
Solusi ini sederhana dan memenuhi sebagian besar kebutuhan saya. PHP standar, dan panel pratinjau secara otomatis memperbarui
setiap kali PHP menulisnya.
$variable = "Variable";
echo "";
Interaksi PHP dan JavaScript.
Saya menemukan ini bermanfaat:
function console($data, $priority, $debug)
{
if ($priority <= $debug)
{
$output = '';
echo $output;
}
}
Dan gunakan seperti:
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);
?>
Output mana di konsol:
Important
Less Important
Even Less Important
Again Important
Dan Anda dapat mematikan log yang kurang penting dengan membatasi mereka menggunakan nilai $ debug.
Singkat dan mudah, untuk array, string atau juga objek.
function console_log( $data ) {
$output = "";
echo $output;
}
function phpconsole($label='var', $x) {
?>
<script type="text/javascript">
console.log('');
console.log('');
script>
php
}
Jika Anda ingin menulis ke file log PHP, dan bukan konsol JavaScript, Anda dapat menggunakan ini:
error_log("This is logged only to the PHP log")
Referensi:
error_log
Untuk Chrome ada ekstensi yang disebut Chrome Logger memungkinkan untuk mencatat pesan PHP.
Firefox DevTools bahkan memiliki
dukungan terintegrasi untuk protokol Chrome Logger .
Untuk mengaktifkan pencatatan, Anda hanya perlu menyimpan file 'ChromePhp.php' di proyek Anda. Maka bisa digunakan
seperti ini:
include 'ChromePhp.php';
ChromePhp::log('Hello console!');
ChromePhp::log($_SERVER);
ChromePhp::warn('something went wrong!');
Contoh diambil dari halaman GitHub .
Outputnya kemudian terlihat seperti ini:
Ada juga ekstensi Google Chrome, PHP Console , dengan perpustakaan PHP yang memungkinkan Anda untuk:
- Lihat kesalahan dan pengecualian di konsol JavaScript Chrome dan di sembulan pemberitahuan.
- Buang semua jenis variabel.
- Jalankan kode PHP dari jarak jauh.
- Lindungi akses dengan kata sandi.
- Log konsol grup berdasarkan permintaan.
- Langsung ke
error file:line
dalam editor teks Anda. - Salin data kesalahan / debug ke clipboard (untuk penguji).
Saya sedang mencari cara
untuk men-debug kode dalam plugin WordPress yang saya kembangkan dan menemukan posting ini.
Saya mengambil bit kode yang paling berlaku bagi saya dari respons lain dan menggabungkannya menjadi fungsi yang dapat saya gunakan untuk debugging WordPress. Fungsinya adalah:
function debug_log($object=null, $label=null, $priority=1) {
$priority = $priority<1? 1: $priority;
$message = json_encode($object, JSON_PRETTY_PRINT);
$label = "Debug" . ($label ? " ($label): " : ': ');
echo "";
}
Penggunaannya adalah sebagai berikut:
$txt = 'This is a test string';
$sample_array = array('cat', 'dog', 'pig', 'ant', 'fly');
debug_log($txt, '', 7);
debug_log($sample_array);
Jika fungsi ini digunakan dengan pengembangan WordPress, fungsi tersebut harus ditempatkan dalam functions.php
file tema anak dan kemudian dapat dipanggil di mana saja
dalam kode.
Saya telah meninggalkan semua hal di atas demi Debugger & Logger . Saya tidak bisa cukup memujinya!
Cukup klik pada salah satu tab di kanan atas, atau pada "klik di sini" untuk membuka / menyembunyikan.
Perhatikan "kategori" yang berbeda. Anda dapat mengklik
sembarang array untuk memperluas / menciutkannya.
Dari halaman web
Fitur utama:
- Tampilkan variabel global ($ GLOBALS, $ _POST, $ _GET, $ _COOKIE, dll.)
- Tampilkan versi PHP dan ekstensi yang dimuat
- Ganti PHP yang terintegrasi dengan penangan kesalahan
- Catat kueri SQL
- Monitor kode dan waktu eksekusi query SQL
- Periksa variabel untuk perubahan
- Fungsi panggilan tracing
- Analisis cakupan kode untuk memeriksa
baris skrip mana yang dijalankan
- Dump semua jenis variabel
- Pemeriksa file dengan penyorot kode untuk melihat kode sumber
- Kirim pesan ke konsol JavaScript (hanya Chrome), untuk skrip Ajax
Untuk panggilan Ajax atau
respons XML / JSON, di mana Anda tidak ingin mengacaukan tubuh, Anda perlu mengirim log melalui tajuk HTTP, lalu menambahkannya ke konsol dengan ekstensi web. Ini adalah bagaimana FirePHP (tidak lagi tersedia) dan QuantumPHP (garpu ChromePHP) melakukannya di Firefox.
Jika Anda memiliki kesabaran, x-debug adalah pilihan yang lebih baik - Anda mendapatkan wawasan yang lebih dalam tentang PHP, dengan kemampuan untuk menjeda skrip Anda, melihat apa yang sedang terjadi, kemudian melanjutkan
skrip.
Saya mungkin terlambat menghadiri pesta, tetapi saya mencari implementasi fungsi logging yang:
- mengambil sejumlah variabel argumen yang dipisahkan koma, seperti halnya javascript
console.log()
, - memberikan output yang diformat (bukan hanya string serial),
- dibedakan dari javascript umum
console.log()
.
Jadi outputnya terlihat seperti itu:
(Cuplikan di bawah ini diuji pada php 7.2.11
. Saya tidak yakin tentang kompatibilitasnya dengan php. Ini juga bisa menjadi masalah untuk javascript (dalam istilah browser lama), karena ia menciptakan tanda koma setelah console.log()
argumen - yang tidak legal sampai ES 2017
.)
php
function console_log(...$args)
{
$args_as_json = array_map(function ($item) {
return json_encode($item);
}, $args);
$js_code = "";
echo $js_code;
}
$list = ['foo', 'bar'];
$obj = new stdClass();
$obj->first_name = 'John';
$obj->last_name = 'Johnson';
echo console_log($list, 'Hello World', 123, $obj);
?>
Salah satu dari kedua ini berfungsi:
php
$five = 5;
$six = 6;
?>
console.log(php echo $five + $six ?>);
php
$five = 5;
$six = 6;
echo("");
?>
Inilah solusi saya, hal yang baik tentang yang satu ini adalah Anda dapat lulus sebanyak mungkin param.
function console_log()
{
$js_code = 'console.log(' . json_encode(func_get_args(), JSON_HEX_TAG) .
');';
$js_code = '';
echo $js_code;
}
Sebut seperti ini
console_log('DEBUG>>', 'Param 1', 'Param 2');
console_log('Console DEBUG:', $someRealVar1, $someVar, $someArray, $someObj);
Sekarang Anda seharusnya bisa melihat output di konsol Anda, selamat coding :)
Menggunakan:
function console_log($data) {
$bt = debug_backtrace();
$caller = array_shift($bt);
if (is_array($data))
$dataPart = implode(',', $data);
else
$dataPart = $data;
$toSplit = $caller['file'])) . ':' .
$caller['line'] . ' => ' . $dataPart
error_log(end(split('/', $toSplit));
}
Inilah fungsi yang berguna. Ini super mudah digunakan, memungkinkan Anda untuk meloloskan sebanyak mungkin argumen dari jenis apa pun, dan akan menampilkan konten objek di jendela konsol browser seolah-olah Anda memanggil console.log dari JavaScript - tetapi dari PHP
Catatan, Anda dapat menggunakan tag juga dengan melewati 'TAG-YourTag', dan itu akan diterapkan hingga tag lain dibaca,
misalnya, 'TAG-YourNextTag'
/*
* Brief: Print to console.log() from PHP
*
* Description: Print as many strings,arrays, objects, and
* other data types to console.log from PHP.
*
* To use, just call consoleLog($data1, $data2, ... $dataN)
* and each dataI will be sent to console.log - note
* that you can pass as many data as you want an
* this will still work.
*
* This is very powerful as it shows the entire
* contents of objects and arrays that can be
* read inside of the browser console log.
*
* A tag can be set by passing a string that has the
* prefix TAG- as one of the arguments. Everytime a
* string with the TAG- prefix is detected, the tag
* is updated. This allows you to pass a tag that is
* applied to all data until it reaches another tag,
* which can then be applied to all data after it.
*
* Example:
*
* consoleLog('TAG-FirstTag', $data, $data2, 'TAG-SecTag, $data3);
*
* Result:
* FirstTag '...data...'
* FirstTag '...data2...'
* SecTag '...data3...'
*/
function consoleLog(){
if(func_num_args() == 0){
return;
}
$tag = '';
for ($i = 0; $i < func_num_args(); $i++) {
$arg = func_get_arg($i);
if(!empty($arg)){
if(is_string($arg) && strtolower(substr($arg, 0, 4)) === 'tag-'){
$tag = substr($arg, 4);
}else{
$arg = json_encode($arg, JSON_HEX_TAG | JSON_HEX_AMP );
echo "";
}
}
}
}
CATATAN: func_num_args () dan func_num_args () adalah fungsi PHP untuk membaca sejumlah argumen input yang dinamis, dan memungkinkan fungsi ini memiliki banyak permintaan console.log yang tak terhingga dari satu panggilan fungsi.
Meskipun ini adalah pertanyaan lama, saya sudah mencari ini. Inilah kompilasi saya dari beberapa solusi yang dijawab di
sini dan beberapa ide lain yang ditemukan di tempat lain untuk mendapatkan solusi satu ukuran untuk semua.
Kode:
// Post to browser console
function console($data, $is_error = false, $file = false, $ln = false) {
if(!function_exists('console_wer')) {
function console_wer($data, $is_error = false, $bctr, $file, $ln) {
echo ''.'
'; return true;
}
}
return @console_wer($data, $is_error, (($file===false && $ln===false) ? array_shift(debug_backtrace()) : false), $file, $ln);
}
//PHP Exceptions handler
function exceptions_to_console($svr, $str, $file, $ln) {
if(!function_exists('severity_tag')) {
function severity_tag($svr) {
$names = [];
$consts = array_flip(array_slice(get_defined_constants(true)['Core'], 0, 15, true));
foreach ($consts as $code => $name) {
if ($svr & $code) $names []= $name;
}
return join(' | ', $names);
}
}
if (error_reporting() == 0) {
return false;
}
if(error_reporting() & $svr) {
console(severity_tag($svr).' : '.$str, true, $file, $ln);
}
}
// Divert php error traffic
error_reporting(E_ALL);
ini_set("display_errors", 1);
set_error_handler('exceptions_to_console');
UJI & PENGGUNAAN:
Penggunaannya sederhana. Sertakan fungsi pertama untuk posting ke konsol secara manual. Gunakan fungsi kedua untuk mengalihkan penanganan pengecualian php. Tes berikut harus memberikan ide.
// Test 1 - Auto - Handle php error and report error with severity info
$a[1] = 'jfksjfks';
try {
$b = $a[0];
} catch (Exception $e) {
echo "jsdlkjflsjfkjl";
}
// Test 2 - Manual - Without explicitly providing file name and line no.
console(array(1 => "Hi", array("hellow")), false);
// Test 3 - Manual - Explicitly providing file name and line no.
console(array(1 => "Error", array($some_result)), true, 'my file', 2);
// Test 4 - Manual - Explicitly providing file name only.
console(array(1 => "Error", array($some_result)), true, 'my file');
PENJELASAN:
Fungsi console($data, $is_error, $file, $fn)
mengambil string atau array sebagai argumen
pertama dan mempostingnya di konsol menggunakan sisipan js.
Argumen kedua adalah bendera untuk membedakan log normal terhadap kesalahan. Untuk kesalahan, kami menambahkan pendengar acara untuk memberi tahu kami melalui peringatan jika ada kesalahan yang dilemparkan, juga disorot di konsol. Bendera ini defaultnya salah.
Argumen ketiga dan keempat adalah deklarasi eksplisit nomor file dan baris, yang opsional. Jika tidak ada, mereka default untuk menggunakan fungsi
php yang telah ditentukan debug_backtrace()
untuk mengambilnya untuk kita.
Fungsi selanjutnya exceptions_to_console($svr, $str, $file, $ln)
memiliki empat argumen dalam urutan yang disebut oleh php handler exception exception. Di sini, argumen pertama adalah tingkat permasalahan, yang kami tinjau lebih lanjut dengan konstanta yang telah ditentukan menggunakan fungsi severity_tag($code)
untuk memberikan informasi lebih lanjut tentang kesalahan.
MEMPERHATIKAN :
Kode di atas menggunakan fungsi
dan metode JS yang tidak tersedia di browser lama. Untuk kompatibilitas dengan versi yang lebih lama, perlu diganti.
Kode di atas adalah untuk lingkungan pengujian, di mana Anda sendiri memiliki akses ke situs. Jangan gunakan ini di situs web (produksi) langsung.
SARAN :
Fungsi pertama console()
melemparkan beberapa pemberitahuan, jadi saya membungkusnya dengan fungsi lain dan menyebutnya menggunakan operator kontrol kesalahan '@'. Ini
bisa dihindari jika Anda tidak keberatan dengan pemberitahuan itu.
Last but not least, peringatan yang muncul bisa mengganggu saat coding. Untuk ini, saya menggunakan bip ini (ditemukan dalam solusi: https://stackoverflow.com/a/23395136/6060602 ) alih-alih peringatan popup. Ini cukup keren dan kemungkinan tidak terbatas, Anda dapat memainkan lagu favorit
Anda dan membuat pengkodean menjadi lebih tidak stres.
Apa itu exception pada PHP?
Exception secara bahasa berarti pengecualian. Sedangkan secara istilah di dalam PHP, ia adalah sebuah perubahan alur program dari kondisi normal ke kondisi tertentu (atau pengecualian tertentu) jika terjadi suatu error (exception).
Sebutkan apa saja yang bisa dilakukan untuk penanganan exception?
Terdapat dua penanganan exception yaitu: • Menangani sendiri exception tersebut. dan melemparkannya (throw) keluar agar ditangani oleh kode yang memanggil method(method yang didalamnya terdapat exception) tersebut.
Bagaimana cara penanganan error pada PHP?
Di antara cara penanganan error yang bisa kita lakukan adalah: Menggunakan fungsi die() Memusatkan penanganan error pada satu fungsi khusus. Menggunakan exception.
Versi PHP manakah yang memperkenalkan try catch exception?
Beberapa exception yang ada di PHP contohnya adalah try dan catch. Exception diperkenalkan di PHP versi 5, ketika penanganan kesalahan standar terbukti tidak cukup untuk kasus-kasus tertentu. Fungsi utama yang digunakan untuk menangani Exception adalah PHP try catch and throw.