Penggunaan fungsi EXEPTIONS pada PHP

Penggunaan fungsi EXEPTIONS pada PHP


Apakah mungkin menulis string atau masuk ke konsol?

Apa yang saya maksud

Sama seperti di JSP, jika kita mencetak sesuatu seperti system.out.println("some"), itu akan ada di konsol, bukan di halaman.

Jawaban:


Firefox

Di Firefox Anda dapat menggunakan ekstensi bernama FirePHP yang memungkinkan proses logging dan dumping informasi dari aplikasi PHP Anda ke konsol. Ini adalah tambahan untuk ekstensi pengembangan web Firebug yang luar biasa .

  • http://www.studytrails.com/blog/using-firephp-in-firefox-to-debug-php/

Chrome

Namun jika Anda menggunakan Chrome, ada alat debugging PHP yang disebut Chrome Logger atau webug (webug memiliki masalah dengan urutan log).

Baru-baru ini Clockwork sedang dalam pengembangan aktif yang memperluas Alat Pengembang dengan menambahkan panel baru untuk memberikan informasi debug dan profil yang berguna. Ini memberikan keluar dari kotak dukungan untuk LARAVEL 4 dan Slim 2 dan dukungan dapat ditambahkan melalui API extensible nya.

Menggunakan Xdebug

Cara yang lebih baik untuk men-debug PHP Anda adalah melalui Xdebug . Sebagian besar browser menyediakan ekstensi pembantu untuk membantu Anda melewatkan string cookie / kueri yang diperlukan untuk menginisialisasi proses debugging.

  • Chrome - Xdebug Helper
  • Firefox - Xdebug termudah
  • Opera - Xdebug
  • Safari - Xdebug Toggler







Atau Anda menggunakan trik dari PHP Debug ke konsol .

Pertama, Anda perlu sedikit fungsi bantuan PHP

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

    echo "";
}

Maka Anda dapat menggunakannya seperti ini:

debug_to_console("Test");

Ini akan membuat output seperti ini:

Debug Objects: Test







Jika Anda mencari pendekatan sederhana, gema sebagai JSON:






Secara default, semua output menuju stdout, yang merupakan respons HTTP atau konsol, tergantung pada apakah skrip Anda dijalankan oleh Apache atau secara manual pada baris perintah. Tetapi Anda dapat menggunakannya error_loguntuk mencatat dan berbagai aliran I / O dapat digunakan untuk menulis fwrite.



Coba yang berikut ini. Ini bekerja:

echo("");





echo 
"
"
;

Menciptakan a

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:

Penggunaan fungsi EXEPTIONS pada PHP







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.logtidak berfungsi dalam hal ini; itu merusak output XML.

Xdebug, dll. Memiliki masalah serupa.

Solusi saya di Windows:

  • Setup .txtfile yang agak mudah untuk diakses dan ditulis
  • Atur error_logvariabel 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:

Penggunaan fungsi EXEPTIONS pada PHP



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:linedalam 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.phpfile 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

Penggunaan fungsi EXEPTIONS pada PHP







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:

Penggunaan fungsi EXEPTIONS pada PHP

(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;
?>



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.