เป็นไปได้ที่จะเขียนสตริงหรือเข้าสู่คอนโซลหรือไม่?
สิ่งที่ผมหมายถึง
เหมือนกับใน JSP ถ้าเราพิมพ์บางอย่างsystem.out.println("some")
มันจะอยู่ที่คอนโซลไม่ใช่ที่หน้ากระดาษ
เป็นไปได้ที่จะเขียนสตริงหรือเข้าสู่คอนโซลหรือไม่?
เหมือนกับใน JSP ถ้าเราพิมพ์บางอย่างsystem.out.println("some")
มันจะอยู่ที่คอนโซลไม่ใช่ที่หน้ากระดาษ
คำตอบ:
Firefox
บน Firefox คุณสามารถใช้ส่วนขยายที่เรียกว่าFirePHPซึ่งเปิดใช้งานการบันทึกและการทิ้งข้อมูลจากแอปพลิเคชัน PHP ของคุณไปยังคอนโซล นี่เป็นส่วนเสริมสำหรับFirebugส่วนขยายการพัฒนาเว็บที่ยอดเยี่ยม
โครเมียม
อย่างไรก็ตามหากคุณใช้ Chrome มีเครื่องมือดีบัก PHP ที่เรียกว่าChrome Loggerหรือwebug (webug มีปัญหาเกี่ยวกับลำดับของบันทึก)
เมื่อเร็ว ๆ นี้Clockworkกำลังอยู่ในระหว่างการพัฒนาซึ่งขยายเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์โดยเพิ่มแผงใหม่เพื่อให้ข้อมูลการดีบักและทำโปรไฟล์ที่มีประโยชน์ มันให้การสนับสนุนนอกกรอบสำหรับLaravel 4และSlim 2และสามารถเพิ่มการสนับสนุนผ่าน API ที่ขยายได้
ใช้ Xdebug
วิธีที่ดีกว่าการแก้ปัญหา PHP ของคุณจะผ่านXdebug เบราว์เซอร์ส่วนใหญ่จะให้ส่วนขยายผู้ช่วยเหลือเพื่อช่วยให้คุณผ่านสตริงคุกกี้ / แบบสอบถามที่ต้องการเพื่อเริ่มต้นกระบวนการแก้ไขข้อบกพร่อง
หรือคุณใช้เคล็ดลับจากPHP Debug ไปยังคอนโซล
ก่อนอื่นคุณต้องมีฟังก์ชั่นตัวช่วย PHP เล็กน้อย
function debug_to_console($data) {
$output = $data;
if (is_array($output))
$output = implode(',', $output);
echo "<script>console.log('Debug Objects: " . $output . "' );</script>";
}
จากนั้นคุณสามารถใช้สิ่งนี้:
debug_to_console("Test");
สิ่งนี้จะสร้างผลลัพธ์เช่นนี้:
Debug Objects: Test
"Debug Objects: " . $data . ""
$data
ปรากฏในผลลัพธ์คุณจะไม่ได้พิมพ์ฟังก์ชันตามที่แสดง ดูอย่างรอบคอบที่เครื่องหมายคำพูดเดี่ยวและคู่ของคุณเพื่อให้แน่ใจว่าตรงกับรหัสด้านบน $data
เป็นตัวแปร php ตามเวลาที่หน้าถูกส่งไปยังเบราว์เซอร์, PHP debug_to_console
ตัวแปรที่จะถูกแทนที่โดยพารามิเตอร์ที่ส่งผ่านไป $data
เบราว์เซอร์ไม่ควรดู (ถ้าคุณดูpage source
ในเบราว์เซอร์ก็ไม่ควรพูด$data
)
หากคุณกำลังมองหาวิธีการที่เรียบง่ายสะท้อนเป็น JSON:
<script>
console.log(<?= json_encode($foo); ?>);
</script>
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>"; }
ตามค่าดีฟอลต์แล้วเอาต์พุตทั้งหมดจะไปที่stdout
ซึ่งเป็นการตอบสนอง HTTP หรือคอนโซลขึ้นอยู่กับว่าสคริปต์ของคุณรันโดย Apache หรือด้วยตนเองในบรรทัดคำสั่ง แต่คุณสามารถใช้error_log
สำหรับการบันทึกและสตรีม I / O ต่างๆสามารถเขียนไปด้วยfwrite
ได้
error_log
ฉันต้องส่งออกไปยังเทอร์มินัลจากเว็บเซิร์ฟเวอร์ในตัว PHP
ลองทำสิ่งต่อไปนี้ มันใช้งานได้:
echo("<script>console.log('PHP: " . $data . "');</script>");
echo
"<div display='none'>
<script type='text/javascript'>
console.log('console log message');
</script>
</div>";
สร้าง
<div>
กับ
display="none"
เพื่อให้ Div ไม่แสดง แต่เป็น
console.log()
ฟังก์ชั่นถูกสร้างขึ้นในจาวาสคริปต์ ดังนั้นคุณจะได้รับข้อความในคอนโซล
div
ผมไม่เข้าใจว่าทำไมคุณจำเป็นต้องมี หากคุณเพิ่งมี<script>
บล็อกจะไม่มีสิ่งใดปรากฏในเบราว์เซอร์
json.encode
ให้เครื่องหมายอัญประกาศไม่แบ่งสายรหัสของคุณ ตัวอย่างเช่น:echo "<script>console.log(".json_encode($msg).")</script>";
ในฐานะผู้เขียนเว็บเพจที่เชื่อมโยงในคำตอบที่ได้รับความนิยมฉันต้องการเพิ่มฟังก์ชั่นตัวช่วยง่ายๆนี้รุ่นสุดท้ายของฉัน มันเป็นของแข็งมากขึ้น
ฉันใช้json_encode()
เพื่อตรวจสอบว่าประเภทตัวแปรไม่จำเป็นและยังเพิ่มบัฟเฟอร์เพื่อแก้ปัญหากับกรอบงาน 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;
}
// $data is the example variable, object; here an array.
$data = [ 'foo' => 'bar' ];
debug_to_console($data);`
นอกจากนี้ยังมีตัวอย่างง่ายๆเป็นภาพเพื่อให้เข้าใจได้ง่ายขึ้น:
ฉันคิดว่ามันสามารถใช้ -
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"]}
บางคำตอบที่ยอดเยี่ยมที่เพิ่มความลึกมากขึ้น แต่ฉันต้องการบางสิ่งที่ง่ายขึ้นและมากขึ้นเช่นconsole.log()
คำสั่งJavaScript
ฉันใช้ PHP ใน "การรวบรวมข้อมูลและเปลี่ยนเป็น XML" ในแอปพลิเคชัน Ajax JavaScript console.log
ไม่ทำงานในกรณีนั้น มันแบ่งเอาท์พุท XML
Xdebug ฯลฯ มีปัญหาที่คล้ายกัน
โซลูชันของฉันใน Windows:
.txt
ไฟล์ที่ง่ายต่อการเข้าถึงและเขียนได้error_log
ตัวแปรPHP ใน.ini
ไฟล์เพื่อเขียนไปยังไฟล์นั้นerror_log('myTest');
คำสั่ง PHP เพื่อส่งข้อความวิธีนี้ง่ายและตรงกับความต้องการของฉันส่วนใหญ่ PHP มาตรฐานและบานหน้าต่างแสดงตัวอย่างจะอัปเดตโดยอัตโนมัติทุกครั้งที่ PHP เขียนถึง
json_encode
แก้ปัญหาด้วยหรือไม่ หากเป็นเช่นนั้นอาจเป็นเครื่องหมายอัญประกาศที่อยู่ในข้อความที่รบกวนเครื่องหมายอัญประกาศในสคริปต์ (ตัวอย่างเช่น: echo "<script>console.log(".json_encode($msg).")</script>";
) ถ้าไม่ฉันอยากรู้ว่าปัญหาคืออะไรที่ทำให้สคริปต์ console.log หยุดทำงานและวิธีการแก้ปัญหาของคุณได้รับการแก้ไขอย่างไร วิธีแก้ปัญหาของคุณดี - ฉันแค่พยายามเรียนรู้เพิ่มเติมเกี่ยวกับเงื่อนไขที่ทำให้console.log
หรือเอาต์พุต XML หยุดพัก console.log
ในหลายกรณีบันทึกข้อผิดพลาดที่คุณทำจะดีกว่าอย่างรวดเร็ว
$variable = "Variable";
echo "<script>console.log('$variable');</script>";
ปฏิสัมพันธ์ระหว่าง PHP และ JavaScript
ฉันพบว่ามีประโยชน์นี้:
function console($data, $priority, $debug)
{
if ($priority <= $debug)
{
$output = '<script>console.log("' . str_repeat(" ", $priority-1) . (is_array($data) ? implode(",", $data) : $data) . '");</script>';
echo $output;
}
}
และใช้มันเช่น:
<?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);
?>
เอาท์พุตใดในคอนโซล:
Important Less Important Even Less Important Again Important
และคุณสามารถปิดการบันทึกที่สำคัญน้อยกว่าโดย จำกัด ให้โดยใช้ค่า $ debug
console('Even Less Important' ,6 , $debug);
สิ่งนี้จะไม่ปรากฏในคอนโซลหรือไม่ ทำไมเป็นเช่นนั้น มีอะไรเกิน 5 ไม่ปรากฏ
$output = '<script>console.log("' . str_repeat(" ", $priority-1)
. '");</script>';
เท่านั้นimplode(",", $data)
และ$data
แตกต่างกัน
สั้นและง่ายสำหรับอาร์เรย์สตริงหรือวัตถุ
function console_log( $data ) {
$output = "<script>console.log( 'PHP debugger: ";
$output .= json_encode(print_r($data, true));
$output .= "' );</script>";
echo $output;
}
function phpconsole($label='var', $x) {
?>
<script type="text/javascript">
console.log('<?php echo ($label)?>');
console.log('<?php echo json_encode($x)?>');
</script>
<?php
}
ถ้าคุณต้องการเขียนไปยังล็อกไฟล์ PHP ไม่ใช่คอนโซล JavaScript คุณสามารถใช้สิ่งนี้:
error_log("This is logged only to the PHP log")
การอ้างอิง: error_log
สำหรับ Chrome มีส่วนเสริมที่เรียกว่าChrome Loggerช่วยให้สามารถบันทึกข้อความ PHP ได้
Firefox ให้ DevTools ได้มีการบูรณาการการสนับสนุนสำหรับโปรโตคอล Chrome Logger
หากต้องการเปิดใช้งานการบันทึกคุณเพียงแค่ต้องบันทึกไฟล์ 'ChromePhp.php'ในโครงการของคุณ จากนั้นสามารถใช้งานได้เช่นนี้:
include 'ChromePhp.php';
ChromePhp::log('Hello console!');
ChromePhp::log($_SERVER);
ChromePhp::warn('something went wrong!');
ตัวอย่างที่นำมาจากหน้า GitHub
ผลลัพธ์อาจมีลักษณะเช่นนี้:
"ccampbell/chromephp": "*"
นอกจากนี้ยังมีส่วนขยายที่ยอดเยี่ยมของ Google Chrome, PHP Consoleพร้อมห้องสมุด PHPที่ช่วยให้คุณ:
error file:line
เครื่องมือแก้ไขข้อความของคุณฉันกำลังมองหาวิธีที่จะแก้ปัญหารหัสในปลั๊กอิน WordPress ที่ฉันกำลังพัฒนาและเจอโพสต์นี้
ฉันเอาบิตของรหัสที่เหมาะสมที่สุดสำหรับฉันจากการตอบกลับอื่น ๆ และรวมสิ่งเหล่านี้เป็นฟังก์ชั่นที่ฉันสามารถใช้สำหรับการดีบัก WordPress ฟังก์ชั่นคือ:
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 "<script>console.log('" . str_repeat("-", $priority-1) . $label . "', " . $message . ");</script>";
}
การใช้งานมีดังนี้:
$txt = 'This is a test string';
$sample_array = array('cat', 'dog', 'pig', 'ant', 'fly');
debug_log($txt, '', 7);
debug_log($sample_array);
หากฟังก์ชั่นนี้ใช้กับการพัฒนา WordPress ฟังก์ชั่นควรจะอยู่ในfunctions.php
ไฟล์ของธีมลูกและสามารถเรียกได้จากทุกที่ในรหัส
ฉันได้ละทิ้งทุกอย่างที่กล่าวในความโปรดปรานของการดีบักเกอร์ & Logger ฉันสรรเสริญไม่พอ!
เพียงคลิกที่หนึ่งในแท็บที่ด้านบนขวาหรือที่ "คลิกที่นี่" เพื่อขยาย / ซ่อน
สังเกตเห็น "หมวดหมู่" ที่แตกต่างกัน คุณสามารถคลิกอาร์เรย์ใดก็ได้เพื่อขยาย / ยุบได้
จากหน้าเว็บ
คุณสมบัติหลัก:
- แสดงตัวแปรแบบกลม ($ GLOBALS, $ _POST, $ _GET, $ _COOKIE, ฯลฯ )
- แสดงเวอร์ชัน PHP และส่วนขยายที่โหลด
- แทนที่ PHP ในตัวจัดการข้อผิดพลาด
- บันทึกแบบสอบถาม SQL
- รหัสตรวจสอบและเวลาดำเนินการสืบค้น SQL
- ตรวจสอบตัวแปรสำหรับการเปลี่ยนแปลง
- ฟังก์ชั่นการติดตามการโทร
- การวิเคราะห์ความครอบคลุมรหัสเพื่อตรวจสอบบรรทัดของสคริปต์ที่ดำเนินการ
- ดัมพ์ของตัวแปรทุกชนิด
- ตัวตรวจสอบไฟล์พร้อมปากกาเน้นข้อความเพื่อดูซอร์สโค้ด
- ส่งข้อความไปยังคอนโซล JavaScript (Chrome เท่านั้น) สำหรับสคริปต์ Ajax
ในฐานะของปี 2017 และด้วยเหตุนี้ Firebug FirePHP ถูกปิดใช้งาน
ฉันเขียนการแก้ไขเล็กน้อยเพื่อเครื่องมือ ChromePHP เพื่อให้การโยกย้ายที่ราบรื่นจาก FirePHP ไปยัง Firebug สำหรับการดีบักผ่านคอนโซล
บทความนี้อธิบายในขั้นตอนง่าย ๆ ที่ชัดเจน
โยกย้ายจาก FirePHP ไปยัง ChromePHP ใน 5 นาที (โดยไม่ทำลายโค้ดที่มีอยู่)
สำหรับการโทร Ajax หรือการตอบสนอง XML / JSON ที่คุณไม่ต้องการยุ่งกับเนื้อหาคุณต้องส่งบันทึกผ่านส่วนหัว HTTP จากนั้นเพิ่มลงในคอนโซลด้วยส่วนขยายของเว็บ นี่คือวิธีที่ FirePHP (ไม่มีแล้ว) และ QuantumPHP (แยก ChromePHP) ทำใน Firefox
หากคุณมีความอดทน x-debug เป็นตัวเลือกที่ดีกว่า - คุณจะได้รับข้อมูลเชิงลึกเกี่ยวกับ PHP มากขึ้นด้วยความสามารถในการหยุดสคริปต์ของคุณชั่วคราวดูว่ามีอะไรเกิดขึ้นบ้างแล้วดำเนินการสคริปต์ต่อ
ฉันอาจจะมาสายสำหรับงานปาร์ตี้ แต่ฉันกำลังมองหาการใช้งานฟังก์ชั่นการบันทึกซึ่ง:
console.log()
,console.log()
เป็นความแตกต่างจากจาวาสคริปต์ที่พบบ่อยดังนั้นผลลัพธ์จะเป็นดังนี้:
(ข้อมูลโค้ดด้านล่างมีการทดสอบ PHP 7.2.11
ผมไม่แน่ใจว่าเกี่ยวกับ PHP กันได้ย้อนหลังของมันอาจจะเป็นปัญหาสำหรับจาวาสคริปต์เช่นกัน (ในรูปของเบราว์เซอร์เก่า) เพราะมันจะสร้างจุลภาคต่อท้าย.. console.log()
ข้อโต้แย้ง - ซึ่งไม่ได้เป็น ถูกกฎหมายจนถึงES 2017
.)
<?php
function console_log(...$args)
{
$args_as_json = array_map(function ($item) {
return json_encode($item);
}, $args);
$js_code = "<script>console.log('%c 💬 log from PHP: ','background: #474A8A; color: #B0B3D6; line-height: 2',";
foreach ($args_as_json as $arg) {
$js_code .= "{$arg},";
}
$js_code .= ")</script>";
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);
?>
หนึ่งในสองนี้ทำงาน:
<?php
$five = 5;
$six = 6;
?>
<script>
console.log(<?php echo $five + $six ?>);
</script>
<?php
$five = 5;
$six = 6;
echo("<script>console.log($five + $six);</script>");
?>
นี่คือทางออกของฉันสิ่งที่ดีเกี่ยวกับอันนี้คือคุณสามารถส่งผ่าน params ได้มากเท่าที่คุณต้องการ
function console_log()
{
$js_code = 'console.log(' . json_encode(func_get_args(), JSON_HEX_TAG) .
');';
$js_code = '<script>' . $js_code . '</script>';
echo $js_code;
}
เรียกว่าวิธีนี้
console_log('DEBUG>>', 'Param 1', 'Param 2');
console_log('Console DEBUG:', $someRealVar1, $someVar, $someArray, $someObj);
ตอนนี้คุณควรจะเห็นผลลัพธ์ในคอนโซลของคุณการเขียนโค้ดที่มีความสุข :)
ใช้:
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));
}
นี่คือฟังก์ชั่นที่ใช้งานง่าย มันใช้งานง่ายสุดช่วยให้คุณสามารถส่งอาร์กิวเมนต์ได้มากเท่าที่คุณต้องการและจะแสดงเนื้อหาของวัตถุในหน้าต่างคอนโซลของเบราว์เซอร์ราวกับว่าคุณเรียกว่า console.log จาก JavaScript - แต่จาก PHP
หมายเหตุคุณสามารถใช้แท็กได้เช่นกันโดยผ่าน 'TAG-YourTag' และมันจะถูกใช้จนกว่าแท็กอื่นจะถูกอ่านเช่น '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 "<script>console.log('" . $tag . " " . $arg . "');</script>";
}
}
}
}
หมายเหตุ: func_num_args ()และfunc_num_args ()เป็นฟังก์ชั่น PHP สำหรับการอ่านจำนวนอาร์กิวเมนต์ที่มีการป้อนข้อมูลแบบไดนามิกและอนุญาตให้ฟังก์ชั่นนี้มีคำขอ console.log จำนวนมากจากการเรียกฟังก์ชันหนึ่งครั้ง
แม้ว่านี่จะเป็นคำถามเก่า แต่ฉันก็มองหาสิ่งนี้ นี่คือการรวบรวมคำตอบของฉันที่นี่และแนวคิดอื่น ๆ ที่พบที่อื่นเพื่อให้ได้โซลูชันที่มีขนาดเดียวเหมาะกับทุกคน
รหัส:
// 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 '<div display="none">'.'<script type="text/javascript">'.(($is_error!==false) ? 'if(typeof phperr_to_cns === \'undefined\') { var phperr_to_cns = 1; document.addEventListener("DOMContentLoaded", function() { setTimeout(function(){ alert("Alert. see console."); }, 4000); }); }' : '').' console.group("PHP '.(($is_error) ? 'error' : 'log').' from "+window.atob("'.base64_encode((($file===false) ? $bctr['file'] : $file)).'")'.((($ln!==false && $file!==false) || $bctr!==false) ? '+" on line '.(($ln===false) ? $bctr['line'] : $ln).' :"' : '+" :"').'); console.'.(($is_error) ? 'error' : 'log').'('.((is_array($data)) ? 'JSON.parse(window.atob("'.base64_encode(json_encode($data)).'"))' : '"'.$data.'"').'); console.groupEnd();</script></div>'; 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');
การทดสอบและการใช้งาน:
การใช้งานง่าย รวมฟังก์ชั่นแรกสำหรับการโพสต์ไปยังคอนโซลด้วยตนเอง ใช้ฟังก์ชั่นที่สองสำหรับการจัดการข้อยกเว้น php การทดสอบต่อไปนี้ควรให้แนวคิด
// 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');
คำอธิบาย:
ฟังก์ชั่นconsole($data, $is_error, $file, $fn)
ใช้สตริงหรืออาร์เรย์เป็นอาร์กิวเมนต์แรกและโพสต์ไว้บนคอนโซลโดยใช้ js แทรก
อาร์กิวเมนต์ที่สองคือการตั้งค่าสถานะเพื่อแยกบันทึกปกติจากข้อผิดพลาด สำหรับข้อผิดพลาดเรากำลังเพิ่มตัวรับฟังเหตุการณ์เพื่อแจ้งให้เราทราบผ่านการแจ้งเตือนหากมีข้อผิดพลาดเกิดขึ้นรวมถึงการเน้นในคอนโซล การตั้งค่าสถานะนี้เป็นค่าเริ่มต้นเป็นเท็จ
อาร์กิวเมนต์ที่สามและสี่เป็นการประกาศที่ชัดเจนของไฟล์และหมายเลขบรรทัดซึ่งเป็นทางเลือก หากขาดไปพวกเขาจะใช้ฟังก์ชัน php ที่กำหนดไว้ล่วงหน้าdebug_backtrace()
เพื่อดึงข้อมูลให้เรา
ฟังก์ชันถัดไปexceptions_to_console($svr, $str, $file, $ln)
มีสี่อาร์กิวเมนต์ตามลำดับที่เรียกโดยตัวจัดการข้อยกเว้นเริ่มต้นของ php ที่นี่อาร์กิวเมนต์แรกคือความรุนแรงซึ่งเรา crosscheck เพิ่มเติมด้วยค่าคงที่กำหนดไว้ล่วงหน้าโดยใช้ฟังก์ชั่นseverity_tag($code)
เพื่อให้ข้อมูลเพิ่มเติมเกี่ยวกับข้อผิดพลาด
ประกาศ:
โค้ดด้านบนใช้ฟังก์ชั่น JS และวิธีการที่ไม่สามารถใช้ได้ในเบราว์เซอร์รุ่นเก่า เพื่อความเข้ากันได้กับรุ่นที่เก่ากว่านั้นจะต้องมีการเปลี่ยน
โค้ดด้านบนใช้สำหรับทดสอบสภาพแวดล้อมซึ่งคุณเพียงคนเดียวสามารถเข้าถึงไซต์ได้ อย่าใช้สิ่งนี้ในเว็บไซต์สด (การผลิต)
คำแนะนำ:
ฟังก์ชั่นแรกconsole()
ขว้างประกาศไปฉันก็เลยใส่มันเข้าไปในฟังก์ชั่นอื่นแล้วเรียกมันว่าใช้ตัวดำเนินการควบคุมข้อผิดพลาด '@' สิ่งนี้สามารถหลีกเลี่ยงได้หากคุณไม่ได้ใส่ใจกับการแจ้งเตือน
สุดท้าย แต่ไม่ท้ายสุดการแจ้งเตือนการเปิดหน้าต่างอาจทำให้เกิดความรำคาญในขณะที่เข้ารหัส สำหรับสิ่งนี้ฉันใช้บี๊ปนี้ (พบในโซลูชัน: https://stackoverflow.com/a/23395136/6060602 ) แทนการแจ้งเตือนป๊อปอัพ มันเจ๋งมากและความเป็นไปได้ไม่มีที่สิ้นสุดคุณสามารถเล่นเพลงโปรดของคุณและทำให้การเขียนโค้ดลดความตึงเครียดลงได้