मैं PHP में कंसोल को कैसे लिख सकता हूं?


Answers

या आप कंसोल के लिए इस वेबसाइट PHP डीबग से चाल का उपयोग करें

सबसे पहले आपको थोड़ा 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" );

यह इस तरह एक ouput बना देगा:

Debug Objects: Test
Question

क्या यह कंसोल में संभव लिखना स्ट्रिंग या लॉग है?

मेरा मतलब

बस जेएसपी की तरह, अगर हम system.out.println("some") जैसे कुछ प्रिंट करते हैं तो यह कंसोल पर पेज पर नहीं होगा।




यदि आप PHP लॉग फ़ाइल को लिखना चाहते हैं, और जावास्क्रिप्ट कंसोल नहीं है तो आप इसका उपयोग कर सकते हैं:

error_log ( "This is logged only to the PHP log" )

संदर्भ: error_log




मैंने उपर्युक्त सभी को http://phptoolcase.com/guides/ptc-debug-guide.html पक्ष में छोड़ दिया है, मैं इसकी प्रशंसा नहीं कर सकता!

ऊपर दाईं ओर स्थित टैब में से किसी एक पर क्लिक करें, या विस्तृत / छुपाने के लिए "यहां क्लिक करें" पर क्लिक करें।

विभिन्न "श्रेणियों" पर ध्यान दें। आप इसे विस्तारित / संक्षिप्त करने के लिए किसी भी सरणी पर क्लिक कर सकते हैं।

वेब पेज से

"मुख्य विशेषताएं:

Show globals vars ($GLOBALS, $_POST, $_GET, $_COOKIE ...)
Show php version and loaded extensions
Replace php built in error handler
Log sql queries
Monitor code and sql queries execution time
Inspect variables for changes
Function calls tracing
Code coverage analysis to check which lines of script where executed
Dump of all types of variable
File inspector with code highlighter to view source code
Send messages to js console(Chrome only), for ajax scripts

"




function console_log( $data ) {
    $bt = debug_backtrace();
    $caller = array_shift($bt);

    if ( is_array( $data ) )
        error_log( end(split('/',$caller['file'])) . ':' . $caller['line'] . ' => ' . implode( ',', $data) );
    else
        error_log( end(split('/',$caller['file'])) . ':' . $caller['line'] . ' => ' . $data );

}



कुछ महान उत्तर जो अधिक गहराई जोड़ते हैं; लेकिन मुझे जेएस console.log() कमांड की तरह कुछ आसान और अधिक चाहिए।

मैं AJAX एप्लिकेशन में बहुत से "एकत्रित डेटा और एक्सएमएल में बदल जाता हूं" में PHP का उपयोग करता हूं। जेएस console.log उस मामले में काम नहीं करता है; यह एक्सएमएल आउटपुट तोड़ता है। (शायद किसी के पास इसका समाधान है?)

Xdebug आदि के समान मुद्दे थे।

विंडोज़ में मेरा समाधान:

  • एक .txt फ़ाइल सेटअप करें जो कुछ हद तक आसानी से प्राप्त करने और लिखने योग्य है
  • उस फ़ाइल को लिखने के लिए .ini फ़ाइल में PHP error_log चर सेट करें
  • फ़ाइल को विंडोज फ़ाइल एक्सप्लोरर में खोलें और इसके लिए एक पूर्वावलोकन फलक खोलें
  • error_log('myTest'); प्रयोग करें error_log('myTest'); संदेश भेजने के लिए PHP कमांड

यह समाधान सरल है, मेरी जरूरतों को पूरा करता है ज्यादातर समय, मानक PHP, और पूर्वावलोकन फलक स्वचालित रूप से अपडेट करता है जब भी PHP इसे लिखता है।




डिफ़ॉल्ट रूप से, सभी आउटपुट stdout , जो HTTP प्रतिक्रिया या कंसोल है, इस पर निर्भर करता है कि आपकी स्क्रिप्ट अपाचे द्वारा या मैन्युअल रूप से कमांड लाइन पर चलती है या नहीं। लेकिन आप लॉगिंग के लिए error_log उपयोग कर सकते हैं और विभिन्न आई / ओ धाराओं को fwrite साथ लिखा जा सकता है।




ग्रेट पोस्ट धन्यवाद, मैं एक वर्डप्रेस प्लगइन में कोड डीबग करने का एक तरीका ढूंढ रहा था जिसे मैं विकसित कर रहा था और इस पोस्ट में आया था।

मैंने कोड के बिट्स ले लिए जो ऊपर दिए गए प्रतिक्रियाओं से मेरे लिए सबसे अधिक लागू होते हैं और इन्हें एक ऐसे फ़ंक्शन में जोड़ते हैं जिसका उपयोग मैं वर्डप्रेस को डीबग करने के लिए कर सकता हूं। समारोह है:

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 );

मुझे आशा है कि किसी और को यह कार्य उपयोगी लगेगा।

यदि यह फ़ंक्शन वर्डप्रेस विकास के साथ प्रयोग किया जाता है, तो फ़ंक्शन को बच्चे थीम की functions.php फ़ाइल में रखा जाना चाहिए और फिर कोड में कहीं भी कहा जा सकता है।




function phpconsole($label='var',$x){
 ?>
 <script type="text/javascript">
    console.log('<?php echo ($label)?>');
    console.log('<?php echo json_encode($x)?>');
    </script>
 <?php
}



2017 तक, फायरबग और इसलिए फायरफैप अक्षम कर दिया गया है।

मैंने कंसोल के माध्यम से डीबगिंग के लिए फायरफैप से फायरबग तक निर्बाध माइग्रेशन की अनुमति देने के लिए chromephp टूल में कुछ छोटे संशोधन लिखे हैं।

यह आलेख स्पष्ट आसान चरणों में बताता है

https://medium.com/@kudehinbuoluwaponle/migrate-from-firephp-to-chromephp-in-5-minutes-without-breaking-existing-code-e4afd1b28c5c




मुझे यह सहायक लगता है:

function console($data, $priority, $debug)
{
    if ($priority <= $debug)
    {
        if (is_array($data))
            $output = '<script>console.log("' . str_repeat(" ", $priority-1) . implode( ",", $data) . '");</script>';
        else
            $output = '<script>console.log("' . str_repeat(" ", $priority-1) . $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

और आप $ डीबग मान का उपयोग कर सीमित करके कम महत्वपूर्ण लॉग को बंद कर सकते हैं




क्रोम के लिए क्रोम लॉगर नामक एक एक्सटेंशन है जो PHP संदेशों को लॉग इन करने की इजाजत देता है।

फ़ायरफ़ॉक्स DevTools भी क्रोम लॉगर प्रोटोकॉल के लिए एकीकृत समर्थन है

लॉगिंग को सक्षम करने के लिए, आपको बस अपनी परियोजना में 'ChromePhp.php' फ़ाइल को सहेजने की आवश्यकता है। फिर इसका इस्तेमाल इस तरह किया जा सकता है:

include 'ChromePhp.php';
ChromePhp::log('Hello console!');
ChromePhp::log($_SERVER);
ChromePhp::warn('something went wrong!');

गिटहब पेज से लिया गया उदाहरण।

तब आउटपुट इस तरह दिख सकता है: