এটি কি স্ট্রিং লিখতে বা কনসোলে লগইন করা সম্ভব?
আমি যা বলতে চাইছি
ঠিক যেমন জেএসপি-তে, আমরা যদি এমন কিছু মুদ্রণ করি তবে system.out.println("some")
এটি কোনও পৃষ্ঠায় নয়, কনসোলে থাকবে।
এটি কি স্ট্রিং লিখতে বা কনসোলে লগইন করা সম্ভব?
ঠিক যেমন জেএসপি-তে, আমরা যদি এমন কিছু মুদ্রণ করি তবে system.out.println("some")
এটি কোনও পৃষ্ঠায় নয়, কনসোলে থাকবে।
উত্তর:
ফায়ারফক্স
ফায়ারফক্সে আপনি ফায়ারএইচপিপি নামে একটি এক্সটেনশন ব্যবহার করতে পারেন যা আপনার পিএইচপি অ্যাপ্লিকেশনগুলি থেকে কনসোলে তথ্য লগিং এবং ডাম্পিং সক্ষম করে। এটি দুর্দান্ত ওয়েব ডেভলপমেন্ট এক্সটেনশন ফায়ারব্যাগের একটি সংযোজন ।
ক্রৌমিয়াম
তবে আপনি যদি ক্রোম ব্যবহার করছেন তবে ক্রোম লগার বা ওয়েবগ নামে একটি পিএইচপি ডিবাগিং সরঞ্জাম রয়েছে (লগের ক্রম নিয়ে ওয়েবগের সমস্যা আছে)।
সম্প্রতি ক্লকওয়ার্ক সক্রিয় বিকাশে রয়েছে যা দরকারী ডিবাগিং এবং প্রোফাইলিং তথ্য সরবরাহ করতে একটি নতুন প্যানেল যুক্ত করে বিকাশকারী সরঞ্জামগুলি প্রসারিত করে। এটি লারাভেল 4 এবং স্লিম 2 এর জন্য বক্স সমর্থন সরবরাহ করে এবং এর এক্সটেনসিবল এপিআইয়ের মাধ্যমে সমর্থন যোগ করা যেতে পারে।
এক্সডিবাগ ব্যবহার করা হচ্ছে
আপনার পিএইচপি ডিবাগ করার একটি ভাল উপায় Xdebug মাধ্যমে হবে । বেশিরভাগ ব্রাউজারগুলি ডিবাগিং প্রক্রিয়াটি আরম্ভ করার জন্য প্রয়োজনীয় কুকি / কোয়েরি স্ট্রিংটি পাস করতে সহায়তা করার জন্য সহায়ক এক্সটেনশান সরবরাহ করে।
বা কনসোল করার জন্য আপনি পিএইচপি ডিবাগ থেকে কৌশলটি ব্যবহার করেন ।
প্রথমে আপনার একটু পিএইচপি সহায়তা ফাংশন প্রয়োজন
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
একটি পিএইচপি পরিবর্তনশীল; পৃষ্ঠাটি ব্রাউজারে প্রেরণের সময়, পিএইচপি ভেরিয়েবলটি প্যারামিটার দ্বারা প্রতিস্থাপন করা হবে debug_to_console
। ব্রাউজারটি কখনও দেখা উচিত নয় $data
। (আপনি যদি page source
ব্রাউজারে লক্ষ্য করেন তবে এটি বলা উচিত নয় $data
))
যদি আপনি একটি সহজ পদ্ধতির সন্ধান করেন তবে জেএসএন হিসাবে প্রতিধ্বনিত করুন:
<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 প্রতিক্রিয়া বা কনসোল। তবে আপনি error_log
লগিংয়ের জন্য ব্যবহার করতে পারেন এবং বিভিন্ন আই / ও স্ট্রিমগুলির সাথে লিখিত হতে পারে fwrite
।
error_log
থেকে টার্মিনালে আউটপুট দেওয়ার জন্য আমার যা দরকার ছিল
নিম্নলিখিত চেষ্টা করুন। এটি কাজ করছে:
echo("<script>console.log('PHP: " . $data . "');</script>");
echo
"<div display='none'>
<script type='text/javascript'>
console.log('console log message');
</script>
</div>";
তৈরি করে a
<div>
সাথে
display="none"
যাতে ডিভ প্রদর্শিত হয় না, তবে
console.log()
ফাংশন জাভাস্ক্রিপ্ট তৈরি করা হয়। সুতরাং আপনি কনসোলে বার্তাটি পান।
div
। আপনার যদি কেবল একটি <script>
ব্লক থাকে তবে ব্রাউজারে কিছুই প্রদর্শিত হবে না।
json.encode
যাতে উদ্ধৃতি চিহ্নগুলি আপনার কোডের লাইনটি না ভেঙে। উদাহরণস্বরূপ:echo "<script>console.log(".json_encode($msg).")</script>";
জনপ্রিয় উত্তরে লিঙ্কযুক্ত ওয়েবপৃষ্ঠার লেখক হিসাবে , আমি এই সাধারণ সহায়ক ফাংশনটির আমার শেষ সংস্করণটি যুক্ত করতে চাই। এটি অনেক বেশি শক্ত।
আমি json_encode()
ভেরিয়েবল টাইপ প্রয়োজনীয় না হয় কিনা তা পরীক্ষা করার জন্য ব্যবহার করি এবং ফ্রেমওয়ার্কগুলির সাথে সমস্যাগুলি সমাধান করার জন্য একটি বাফারও যুক্ত করি add এখানে শক্ত রিটার্ন বা অতিরিক্ত ব্যবহারের দরকার নেই 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()
কমান্ডের মতো আমার আরও সহজ কিছু দরকার ছিল ।
আমি অ্যাজাক্স অ্যাপ্লিকেশনগুলিতে প্রচুর "ডেটা সংগ্রহ এবং এক্সএমএল রূপান্তরিত" করতে পিএইচপি ব্যবহার করি। জাভাস্ক্রিপ্ট console.log
সেই ক্ষেত্রে কাজ করে না; এটি এক্সএমএল আউটপুট ভঙ্গ করে।
এক্সডিবাগ ইত্যাদির একই সমস্যা ছিল।
উইন্ডোজে আমার সমাধান:
.txt
ফাইল সেটআপ করুন যা কিছুটা সহজেই পারা যায় এবং লিখতে পারেerror_log
সেই .ini
ফাইলটিতে লিখতে ফাইলটিতে পিএইচপি ভেরিয়েবল সেট করুনerror_log('myTest');
বার্তা প্রেরণের জন্য পিএইচপি কমান্ড ব্যবহার করুনএই সমাধানটি সহজ এবং বেশিরভাগ সময় আমার প্রয়োজনগুলি পূরণ করে। স্ট্যান্ডার্ড পিএইচপি, এবং পূর্বরূপ ফলকটি প্রতিবার পিএইচপি এতে লিখলে স্বয়ংক্রিয়ভাবে আপডেট হয়।
json_encode
সমস্যা সমাধান করবে? যদি তা হয়, তবে বার্তার মধ্যে উদ্ধৃতি চিহ্নগুলি স্ক্রিপ্টের উদ্ধৃতি চিহ্নগুলিতে হস্তক্ষেপ করতে পারে। (উদাহরণস্বরূপ echo "<script>console.log(".json_encode($msg).")</script>";
:)। যদি তা না হয় তবে আমি উত্সাহিত হয়েছি যে সমস্যাটি কী কারণে কনসোল.লগ স্ক্রিপ্টটি ভেঙেছিল এবং কীভাবে / কেন আপনার সমাধান এটি স্থির করেছে। আপনার সমাধানটি ভাল - আমি যে অবস্থার কারণে console.log
বা xML আউটপুটটি ভেঙে গেছে সে সম্পর্কে আরও জানার চেষ্টা করছি । বেশিরভাগ ক্ষেত্রে, ত্রুটিযুক্ত লগ আপনি যেমন করেছিলেন তাত্ক্ষণিকের চেয়ে অনেক ভাল console.log
।
$variable = "Variable";
echo "<script>console.log('$variable');</script>";
পিএইচপি এবং জাভাস্ক্রিপ্ট মিথস্ক্রিয়া।
আমি এটি সহায়ক বলে মনে করি:
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
এবং আপনি কম গুরুত্বপূর্ণ লগগুলি $ ডিবাগ মান ব্যবহার করে সীমাবদ্ধ করে স্যুইচ করতে পারেন।
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
}
ক্রোমের জন্য ক্রোম লগার নামে একটি এক্সটেনশন রয়েছে যাতে পিএইচপি বার্তাগুলি লগ করতে দেয়।
ফায়ারফক্স ডেভটুলগুলি এমনকি ক্রোম লগার প্রোটোকলের জন্য সমন্বিত সমর্থন পেয়েছে ।
লগিং সক্ষম করতে, আপনাকে কেবল আপনার প্রকল্পে 'ChromePhp.php' ফাইলটি সংরক্ষণ করতে হবে । তারপরে এটি ব্যবহার করা যেতে পারে:
include 'ChromePhp.php';
ChromePhp::log('Hello console!');
ChromePhp::log($_SERVER);
ChromePhp::warn('something went wrong!');
গিটহাব পৃষ্ঠা থেকে নেওয়া উদাহরণ ।
আউটপুটটি তখন এর মতো দেখাতে পারে:
"ccampbell/chromephp": "*"
পিএইচপি লাইব্রেরির সাথে একটি দুর্দান্ত গুগল ক্রোম এক্সটেনশন, পিএইচপি কনসোল রয়েছে যা আপনাকে এগুলি করতে দেয়:
error file:line
আপনার পাঠ্য সম্পাদক এ ঝাঁপ দাও ।আমি একটি ওয়ার্ডপ্রেস প্লাগইনে কোডটি ডিবাগ করার একটি উপায় খুঁজছিলাম যা আমি বিকাশ করছিলাম এবং এই পোস্টটি জুড়ে এসে।
আমি অন্যান্য প্রতিক্রিয়াগুলি থেকে আমার পক্ষে সবচেয়ে প্রযোজ্য কোডের বিট নিয়েছি এবং এগুলি একটি ফাংশনে সংযুক্ত করেছিলাম যা আমি ওয়ার্ডপ্রেস ডিবাগিংয়ের জন্য ব্যবহার করতে পারি। ফাংশনটি হ'ল:
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
শিশু থিমের ফাইলে রাখা উচিত এবং তারপরে কোডের যে কোনও জায়গায় ডেকে আনা যেতে পারে।
আমি উপরের সমস্তটি ডিবাগার এবং লগারের পক্ষে ত্যাগ করেছি । আমি যথেষ্ট প্রশংসা করতে পারি না!
উপরের ডানদিকে কেবল একটি ট্যাবে ক্লিক করুন বা প্রসারিত / আড়াল করতে "এখানে ক্লিক করুন" এ ক্লিক করুন।
বিভিন্ন "বিভাগ" লক্ষ্য করুন। এটিকে প্রসারিত / সঙ্কুচিত করতে আপনি যে কোনও অ্যারে ক্লিক করতে পারেন।
ওয়েব পৃষ্ঠা থেকে
প্রধান বৈশিষ্ট্য:
- গ্লোবাল ভেরিয়েবলগুলি দেখান ($ গ্লোবালস, $ _POST, $ _GET, $ _COOKIE, ইত্যাদি)
- পিএইচপি সংস্করণ এবং লোড হওয়া এক্সটেনশানগুলি দেখান
- ত্রুটি হ্যান্ডলারের মধ্যে নির্মিত পিএইচপি প্রতিস্থাপন করুন
- এসকিউএল অনুসন্ধানগুলি লগ করুন
- কোড এবং এসকিউএল কোয়েরি কার্যকর করার সময় পর্যবেক্ষণ করুন
- পরিবর্তনগুলির জন্য ভেরিয়েবলগুলি পরীক্ষা করুন
- ফাংশন কল ট্রেসিং
- কোড কভারেজ বিশ্লেষণ স্ক্রিপ্টের কোন রেখাগুলি কার্যকর করা হয়েছে তা পরীক্ষা করতে
- সব ধরণের ভেরিয়েবলের ডাম্প
- উত্স কোড দেখতে কোড হাইলাইটার সহ ফাইল পরিদর্শক
- অ্যাজাক্স স্ক্রিপ্টগুলির জন্য জাভাস্ক্রিপ্ট কনসোলটিতে (কেবল ক্রোম) বার্তা প্রেরণ করুন
2017 হিসাবে, ফায়ারব্যাগ এবং সেজন্য ফায়ারএইচপি অক্ষম করা হয়েছে ।
আমি কনসোলের মাধ্যমে ডিবাগিংয়ের জন্য ফায়ার পিএইচপি থেকে ফায়ারব্যাগে নির্বিঘ্নে স্থানান্তরিত করার জন্য ChromePHP সরঞ্জামটিতে কিছুটা সামান্য পরিবর্তন লিখেছি।
এই নিবন্ধটি পরিষ্কার সহজ পদক্ষেপে ব্যাখ্যা করে
5 মিনিটের মধ্যে ফায়ারএইচপি থেকে ক্রোম পিএইচপিতে স্থানান্তর করুন (বিদ্যমান কোডটি ভঙ্গ না করে)
অ্যাজাক্স কল বা এক্সএমএল / জেএসএন প্রতিক্রিয়াগুলির জন্য, যেখানে আপনি শরীরের সাথে গোলযোগ করতে চান না, আপনাকে এইচটিটিপি শিরোনামের মাধ্যমে লগগুলি প্রেরণ করতে হবে, তারপরে সেগুলি ওয়েব এক্সটেনশান সহ কনসোলে যুক্ত করতে হবে। ফায়ারএইচপিপি (আর উপলভ্য নয়) এবং কোয়ান্টামপিএইচপি (ক্রোমপিএইচপির একটি কাঁটাচামচ) ফায়ারফক্সে এটি করে।
আপনার যদি ধৈর্য থাকে, এক্স-ডিবাগ একটি ভাল বিকল্প - আপনি পিএইচপি সম্পর্কে গভীর অন্তর্দৃষ্টি পাবেন, আপনার স্ক্রিপ্টটি থামানোর ক্ষমতা সহ, কী চলছে তা দেখুন, তারপরে স্ক্রিপ্টটি আবার শুরু করুন।
আমি কোনও পার্টির জন্য দেরি করতে পারি, তবে আমি লগিং ফাংশনটি বাস্তবায়নের সন্ধান করছিলাম যা:
console.log()
,console.log()
।সুতরাং আউটপুট যেমন মনে হচ্ছে:
(নীচের স্নিপেটটি পিএইচপি-তে পরীক্ষা করা হয়েছে 7.2.11
I'm আমি এর পিএইচপি পশ্চাদপদ সামঞ্জস্যতা সম্পর্কে নিশ্চিত নই It এটি জাভাস্ক্রিপ্টের জন্যও সমস্যা হতে পারে (পুরানো ব্রাউজারগুলির শর্তে)) কারণ এটি 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);
?>
এখানে আমার সমাধান, এটির সম্পর্কে ভাল বিষয়টি হ'ল আপনি নিজের পছন্দমতো অনেকগুলি প্যারাম পাস করতে পারেন।
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));
}
এখানে একটি কার্যকর ফাংশন। এটি ব্যবহার করা অত্যন্ত সহজ, আপনি যেকোন প্রকারের পছন্দমতো আর্গুমেন্ট পাস করতে পারবেন এবং ব্রাউজার কনসোল উইন্ডোতে অবজেক্টের বিষয়বস্তু প্রদর্শিত হবে যেমন আপনি জাভাস্ক্রিপ্ট থেকে কনসোল.লগ বলেছেন - তবে পিএইচপি থেকে
দ্রষ্টব্য, আপনি '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 () গতিশীল সংখ্যক ইনপুট আর্গুমেন্ট পড়ার জন্য পিএইচপি ফাংশন এবং এই ফাংশনটিকে এক ফাংশন কল থেকে অসীম বহু কনসোল.লগ অনুরোধ করার অনুমতি দেয় have
যদিও এটি একটি পুরানো প্রশ্ন, আমি এটি সন্ধান করছি। এক-আকারের ফিটনেস-সমস্ত সমাধান পেতে এখানে আমার উত্তরগুলির কয়েকটি সমাধানের সংকলন এবং অন্য কোথাও পাওয়া অন্য কিছু ধারণাগুলি।
কোড:
// 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');
পরীক্ষা ও ব্যবহার:
ব্যবহার সহজ। ম্যানুয়ালি কনসোল পোস্ট করার জন্য প্রথম ফাংশন অন্তর্ভুক্ত করুন। পিএইচপি ব্যতিক্রম হ্যান্ডলিং ডাইভার্ট করার জন্য দ্বিতীয় ফাংশন ব্যবহার করুন। নিম্নলিখিত পরীক্ষার একটি ধারণা দেওয়া উচিত।
// 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)
প্রথম আর্গুমেন্ট হিসাবে স্ট্রিং বা অ্যারে নেয় এবং জেএস সন্নিবেশ ব্যবহার করে এটি কনসোলে পোস্ট করে।
দ্বিতীয় যুক্তি হ'ল ত্রুটিগুলির বিরুদ্ধে সাধারণ লগগুলিকে আলাদা করার জন্য একটি পতাকা। ত্রুটির জন্য, আমরা ইভেন্ট শ্রোতাদেরকে কোনও ত্রুটি নিক্ষেপ করা হলে সতর্কতাগুলির মাধ্যমে আমাদের জানানোর জন্য যুক্ত করছি, কনসোলে হাইলাইটও করছি। এই পতাকাটি মিথ্যা হিসাবে ডিফল্ট হয়েছে।
তৃতীয় এবং চতুর্থ আর্গুমেন্টগুলি ফাইল এবং লাইন নম্বরগুলির স্পষ্ট ঘোষণা, যা alচ্ছিক। অনুপস্থিত থাকলে, এগুলি আমাদের debug_backtrace()
জন্য আনতে পূর্বনির্ধারিত পিএইচপি ফাংশনটি ব্যবহার করে তাদের ডিফল্ট করা হয়েছে ।
exceptions_to_console($svr, $str, $file, $ln)
পিএইচপি ডিফল্ট ব্যতিক্রম হ্যান্ডলার দ্বারা ডেকে নেওয়া ক্রমে পরবর্তী ফাংশনটিতে চারটি যুক্তি রয়েছে। এখানে প্রথম যুক্তিটি হল তীব্রতা, যা আমরা severity_tag($code)
ত্রুটি সম্পর্কিত আরও তথ্য সরবরাহ করতে ফাংশন ব্যবহার করে পূর্বনির্ধারিত ধ্রুবকগুলির সাথে ক্রসচেক করি ।
বিজ্ঞপ্তি:
উপরের কোডে জেএস ফাংশন এবং পদ্ধতিগুলি ব্যবহার করা হয় যা পুরানো ব্রাউজারগুলিতে পাওয়া যায় না। পুরানো সংস্করণগুলির সাথে সামঞ্জস্য করার জন্য, এটি প্রতিস্থাপন প্রয়োজন।
উপরের কোডটি পরিবেশ পরীক্ষা করার জন্য, যেখানে আপনি একাই সাইটে প্রবেশ করতে পারেন। লাইভ (উত্পাদন) ওয়েবসাইটে এটি ব্যবহার করবেন না।
পরামর্শ:
প্রথম console()
ফাংশনটিতে কিছু বিজ্ঞপ্তি ছুঁড়েছে, তাই আমি এগুলিকে অন্য ফাংশনের মধ্যে আবদ্ধ করে রেখেছি এবং এটিকে ত্রুটি নিয়ন্ত্রণ অপারেটর '@' ব্যবহার করে বলেছি। আপনি যদি বিজ্ঞপ্তিগুলি কিছু মনে না করেন তবে এটি এড়ানো যেতে পারে।
সর্বশেষে তবে অন্তত নয়, কোডিং করার সময় পপিং করা সতর্কতাগুলি বিরক্তিকর হতে পারে। এর জন্য আমি পপআপ সতর্কতাগুলির পরিবর্তে এই বীপটি (সমাধানটিতে পেয়েছি: https://stackoverflow.com/a/23395136/6060602 ) ব্যবহার করছি। এটি বেশ দুর্দান্ত এবং সম্ভাবনাগুলি অফুরন্ত, আপনি আপনার পছন্দসই টিউনগুলি খেলতে পারবেন এবং কোডিংকে কম চাপ দিন।