পিএইচপি-তে আরও সুন্দর / তথ্যবহুল Var_dump বিকল্প? [বন্ধ]


130

প্রতিটি শালীন পিএইচপি প্রোগ্রামার টি print_rবা var_dumpমোড়কের তারা প্রেম ও বরাদ্দ শর্টকাট কী ব্যবহার করেন, কেন আমরা না আমাদের প্রিয় বেশী ভাগ


39
আমি কেবল ইকো ব্যবহার করি '<pre>'; মুদ্রণ_আর ($ var); প্রস্থান; আমি এমনকি এটি বন্ধ না। আমি অনুমান করি আমি শালীন নই
ফানকি ডড

আমি লিথটি গিথুবকে নির্দেশ করে সম্পাদনা করেছি, যেখানে আমি কিন্টের বিকাশ চালিয়ে যাচ্ছি এবং এটি নিয়ে আপনার যদি এখনও কোনও সমস্যা থাকে তবে দয়া করে আমাকে যেকোন মাধ্যমে জানাতে দিন।
রাভেরেন

1
আরে, কিন্ত দুর্দান্ত! এটি আমার দিনটি বাঁচিয়েছে।
István Ujj-Mászáros

2
কেন একটি প্রশ্ন যা 100% একটি প্রোগ্রামের বিজ্ঞাপন বিজ্ঞপ্তিটি "আমি নিজের নিজের তৈরি করে দিচ্ছি" সংস্করণে ?? প্রথম প্রশ্নটি হ'ল কেন কোনও পণ্যের বিজ্ঞাপনকে প্রশ্ন হিসাবে অনুমোদিত।
m3nda

11
কারণ আমি প্রশ্ন জিজ্ঞাসার পরে এক বছরেরও বেশি সময় পরে সরঞ্জামটি তৈরি করেছি made আপনাকে কী বিরক্ত করছে তা আমি জানি না, আমি একটি 10 ​​কে + লাইন পরিপক্ক ওপেন সোর্স সরঞ্জাম তৈরি করেছি এবং কয়েক বছর পরে ধারাবাহিকভাবে এটি উন্নত করছি। আমি প্রশ্নে আমার নিজের উত্তরটি দিয়েছি - যেমনটি এসও তে .তিহ্য।
রাভেরেন

উত্তর:


70

এটি জিজ্ঞাসা করার পরে পুরো সময় এবং শ্রমের একটি সম্পূর্ণ বছর, আমি অবশেষে আমার ভার্সডাম্প, কিন্টের সংস্করণটি সন্ধান করেছি। এটা সম্পর্কে পড়ুন প্রকল্প পাতা , অথবা সরাসরি GitHub মধ্যে

এখানে একটি স্ক্রিনশট:

kint

প্লাগের জন্য দুঃখিত :)


সম্পাদনা: আমি কেবল কমেন্টারদের মনে করিয়ে দিতে চাই, এটি কোনও সমর্থন ফোরাম নয়, যদি আপনার সমস্যা হয় / কোনও বৈশিষ্ট্য চান তবে দয়া করে একটি সমস্যা ফাইল করুন । সমর্থন অনুরোধ মন্তব্যগুলি মুছে ফেলার জন্য পতাকাঙ্কিত করা হবে।


আমাকে ফন্টের আকার পরিবর্তন করতে হবে, এবং সিএসএস কোডটি সুন্দরী করতে হয়েছিল, তবে ভাল কাজটি আমার পছন্দ হয়েছে ... দীর্ঘদিন থেকে ক্রুমো ব্যবহারকারীর কাছ থেকে এসেছেন
কুমিস

1
আপনি কী পরিবর্তন করেছেন, আপনি যদি উন্নতি করতে চান তবে আপনি আমাকে পরিবর্তনগুলি raveren@gmail.com- এ পাঠাতে পারেন
রাভেরেন

আমি ক্রমোতে অভ্যস্ত ছিলাম এবং আমি আরও ছোট ফন্টগুলি চেয়েছিলাম এবং আমি সিএসএস কোডটিও সুন্দরী করেছি। সত্যিকারের উন্নতি বলা যায় না এমন কিছুই, যা পুরানো অভ্যাসের মতো নয় :)
কুমিস

ভাল ধারণাটি ছিল যে সিএসএসকে জেএসের সাথে সংকুচিত করার কথা রয়েছে যাতে আসল আউটপুটটিতে যতটা সম্ভব হস্তক্ষেপ করা যায়। অবশ্যই উত্পন্ন
উত্সটির বেশিরভাগ প্রসারণের

2
যেমন একটি উদাহরণ হিসাবে, কিন্ট সুরক্ষিত এবং প্রাইভেট ভেরিয়েবলগুলি দেখায় যদি আপনি কোনও বস্তু ডাম্প করেন তবে ক্রুমো করে না (কারণ আমি মনে করি কেবল পূর্ববর্তী প্রতিচ্ছবি শ্রেণীর ব্যবহার করে)। সাধারণভাবে বলতে গেলে আমি কিন্তকে উন্নত হতে দেখলাম; যদিও এটিকে আরও ব্যবহারযোগ্য করে তোলার জন্য আমাকে সিএসএস টিকও করতে হয়েছিল (নেস্টেড প্রপার্টি টন ডাম্প করার সময় সেই বিশাল ফন্টটি খুব ভাল কাজ করে না)। ওহ এবং এর পেছনের কোডটি কোনও জগাখিচুড়ি কথা নয়, এমন কিছু যা ক্রোমো সম্পর্কে বলতে পারে না (দুঃখিত ক্রোমো লেখক!)
মাহন

45

Xdebug এক্সটেনশান দ্বারা সরবরাহিত হিসাবে আমার পছন্দটি হল var_dumpফাংশন : কেবল এক্সটেনশনটি ইনস্টল করুন (উইন্ডোজ এবং লিনাক্স উভয় ক্ষেত্রেই সহজ) , এবং আরও ভাল আউটপুট পান:var_dump

  • ভাল গঠন
    • এইচটিএমএল
    • রং
  • এবং আপনার কতটা তথ্য প্রদর্শিত হবে তা টিউন করার বিকল্প রয়েছে

এবং একটি দ্রুত স্ক্রিনশট:

xdebug


এবং অবশ্যই, এক্সডিবাগ অন্যান্য দূরবর্তী ডিবাগিং (যেমন আপনার পিএইচপি অ্যাপ্লিকেশনটির গ্রাফিকাল ডিবাগিং, উদাহরণস্বরূপ অ্যাকলিপস পিডিটি-তে) এর মতো আরও অনেক দরকারী স্টাফ নিয়ে আসে , প্রোফাইলিং, ...


1
আমার এই xdebug ফর্ম্যাটিং ক্লাসটি একটি শেয়ার্ড হোস্টে ব্যবহার করতে হবে। এটি আমার ব্যক্তিগত প্রকল্পে অন্তর্ভুক্ত করার কোনও উপায় আছে কি?
আনিউল রিভাস

1
আপনি যদি আপনার সার্ভারের প্রশাসক (রুট) না হন তবে আপনি সম্ভবত পিএইচপি এক্সটেনশন ইনস্টল করতে সক্ষম হবেন না ( পিএইচপি এক্সটেনশানগুলি ইনস্টল করার জন্য কোনও শেয়ার্ড হোস্টিং পরিষেবা আমি কখনও দেখিনি) ; সুতরাং, না, আপনি Xdebug ব্যবহার করতে পারবেন না (যাইহোক, এটি একটি প্রোডাকশন সার্ভারে ইনস্টল করা সাধারণত ভাল ধারণা নয়: এটি একটি ডিবাগিং এক্সটেনশান, মোটামুটি) ; আপনাকে একটি পরিবর্তনশীল-আউটপুটিং ফাংশনটির পিএইচপি ভিত্তিক প্রয়োগে ফিরে যেতে হবে (কিছু অন্যান্য উত্তর দেখুন)
পাস্কাল মার্টিন

1
হ্যাঁ, যখন ত্রুটি দেখা দেয় তখন নিজেকে কিছু আউটপুট প্রেরণ করতে আমার কেবল ক্লাসের প্রয়োজন ছিল।
আনিউল রিভাস

34

আমি আমার নিজস্ব লিখেছি: আরএফ ( ডেমো ):

r () আউটপুট

পরিকল্পনাগুলি কেবল পাঠ্য-রেন্ডারিং যুক্ত করতে হবে এবং কীট এর মতো ইনপুট এক্সপ্রেশন সম্পর্কে তথ্য প্রদর্শন করবে ...


4
ভাল কাজ, খুব সুন্দর সরঞ্জাম
susuperczynski

2
আরএফএফ দুর্দান্ত, রঙিন, দ্রুত। আমি সব সময় এটি ব্যবহার করি।
মার্টি ম্যাকগি

2
দুর্দান্ত সরঞ্জাম, আমি এটিতে স্যুইচ করেছি। ধন্যবাদ!
অ্যান্ডিস

কয়েক জন লোক সুরকার ব্যবহার করে, ভাল ... আমি না। আপনি যদি একটি তৈরি করতে চান তবে dllআমি এই "ডিবাগ" ব্যবহার করব। ধন্যবাদ, এবং দুর্দান্ত কাজ!
অ্যালেক্স

27

এখানে আমার, যা আমি ইনলাইন ব্যবহার করি, খুব দরকারী:

$pretty = function($v='',$c="&nbsp;&nbsp;&nbsp;&nbsp;",$in=-1,$k=null)use(&$pretty){$r='';if(in_array(gettype($v),array('object','array'))){$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").'<br>';foreach($v as $sk=>$vl){$r.=$pretty($vl,$c,$in+1,$sk).'<br>';}}else{$r.=($in!=-1?str_repeat($c,$in):'').(is_null($k)?'':"$k: ").(is_null($v)?'&lt;NULL&gt;':"<strong>$v</strong>");}return$r;};

echo $pretty($some_variable);

2
এই ফাংশনটি পছন্দ করুন - সহজ এবং স্পষ্ট এবং আমি খুব সহজ উল্লেখ করেছি :)
ডেরেকড্রিয়ারি

ধন্যবাদ। আমি সব সময় এটি ব্যবহার করি। সত্যিই পিএইচপি মধ্যে নির্মিত উচিত। দ্বিতীয় প্যারামিটারটি ব্যবহার করে আপনি নিজের ফর্ম্যাটিংটি রাখতে পারেন। যেমন প্রতিধ্বনি $ সুন্দর ($ কিছু_ পরিবর্তনশীল, "-");
গিলারমো ফিলিপস

7
এটি প্রিন্ট_আর, ভার_ডাম্প এবং ভার_এক্সপোর্ট থেকে সমস্ত খারাপ বৈশিষ্ট্যকে সুন্দর করে সংযুক্ত করে । কোনও এইচটিএমএল এড়ানো যায় না, কেবলমাত্র একক প্যারামিটার গ্রহণ করে, পুনরাবৃত্তির জন্য ঝুলিয়ে দেয়, আউটপুট ফেরত দিতে পারে না এবং কেবল শীর্ষে থেকে যায়, এটি সম্পূর্ণ অপঠনযোগ্য । আমি একটি গাধার হতে চাই না, তবে মন্তব্যগুলি এটিকে এত নিখুঁত বলে মনে করে।
রাভেরেন

আপনার মন্তব্য @ রাভারেনের জন্য আপনাকে ধন্যবাদ। আপনি যদি আরও নির্দিষ্ট হতে পারেন তবে আমি আমার উত্তরটি উন্নত করব।
গিলারমো ফিলিপস

2
আইএমও সেরা একক লাইন সমাধান সহজভাবে হয় function pretty(){echo'<pre>';foreach(func_get_args()as $arg){ob_start();var_dump($arg);echo htmlentities(ob_get_clean())."\n#####\n#####\n\n";}die;}। ভার_ডাম্প একটি খুব ভার্জোজ ফাংশন, এটি পিএইচপি সমস্ত প্রান্তের কেস পরিচালনা করে (যার মধ্যে অনেকগুলি রয়েছে) এবং এটি পাঠযোগ্য না হলেও 100% স্থিতিশীল। তবে দিনের শেষে, আপনি যদি মনে করেন যে আপনার বাস্তবায়নটি আপনার পক্ষে সবচেয়ে ভাল, তবে এটি অবশ্যই আপনার ব্যবহার করা উচিত।
রাভেরেন

16

আপনি ক্রমো ( সতর্কতা, ম্যালওয়ারের জন্য ক্রোম সতর্কতা ) খুঁজছেন।

এটি সহজভাবে বলতে গেলে, ক্রামো হ'ল প্রিন্ট_আর () এবং ভার_ডাম্প () এর প্রতিস্থাপন। সংজ্ঞা অনুসারে ক্রোমো একটি ডিবাগিং সরঞ্জাম (প্রাথমিকভাবে পিএইচপি 4 / পিএইচপি 5 এর জন্য এখন কেবলমাত্র পিএইচপি 5 এর জন্য), যা কোনও পিএইচপি ভেরিয়েবল সম্পর্কে কাঠামোগত তথ্য প্রদর্শন করে।


এটা অসাধারণ! ধন্যবাদ। +1
the_drow

2
যখন আমি চেষ্টা করেছিলাম, এটি ভেঙে গেছে। আমি এটি রিপোর্ট করেছি, তবে কোনও উত্তর নেই এবং কোনও নতুন সংস্করণ নেই
মাওগ

2
@ পেক্কা লিঙ্কটি ক্রোমে একটি ম্যালওয়্যার সতর্কতা ছুড়ে দিচ্ছে।
টিম পোস্ট

আজ ক্রোমো এই লোকটি দ্বারা আপডেট করা হয়েছে github.com/mmucklo/krumo (তবে কিন্ত আরও ভাল হতে পারে, আরও বিশদ)
lolesque

9

আমি ফায়ারফপ প্লাস ফায়ারব্যাগ পছন্দ করি

  • এটি হেডার ব্যবহার করে লগিংয়ের তথ্য লিখে রাখে, তাই এটি এজেএক্সকে ভেঙে দেয় না।
  • আপনার লগ করা ভেরিয়েবল / অবজেক্টের একটি খুব সুন্দর গ্রাফিকাল উপস্থাপনা দেয়
  • ফাইলের নাম এবং লাইন নম্বর প্রদর্শন করতে পারে যেখানে প্রতিটি লগ স্টেটমেন্ট হয়
  • প্রক্রিয়াজাতীয় বা অবজেক্ট ভিত্তিক এপিআই সহ আপনার প্রকল্পে ব্যবহার করা সহজ

8

আমি ডিবাগ ব্যবহার করছি, যা কোল্ডফিউজনের দুর্দান্ত cfdumpট্যাগটি অনুকরণ করে :

http://dbug.ospinto.com/examples.php


আমার মতো কোনও কোল্ডফিউশন বিকাশকারীদের জন্য মার্জিত সমাধান
বিশ্বস্ত

8

এর জন্য আমার (আংশিক) সমাধানটি হ'ল এইভাবে কোনও ফাংশন যুক্ত করুন (গুগল ক্রোম ব্যবহার করে):

<?
function console_dump($value)
{ 
?>
<script>
    console.log(<? echo json_encode($value); ?>);
</script>
<?
}
?>

Ctrl + Shift + J টিপুন (কনসোল খোলে), এবং আপনি সেখানে JSON কাঠামো খুঁজে পেতে পারেন। অবশ্যই JSON প্রতিক্রিয়াগুলি অবশ্যই একটি দুর্দান্ত মুদ্রণের জন্য আরও কার্যকর more


8

আমি যা ব্যবহার করি তার একটি সম্পূর্ণ উদাহরণ ...

<pre>

<?php


//*********** Set up some sample data

$obj = new stdClass;
$obj->a=123;
$obj->pl=44;
$obj->l=array(31,32);

$options = array(
  'Orchestra'=>array(1=>'Strings', 8=>'Brass', 9=>$obj, 3=>'Woodwind', 16=>'Percussion'),
  2=>'Car',
  4=>'Bus',
  'TV'=>array(21=>'Only Fools', 215=>'Brass Eye', 23=>'Vic Bob',44=>null, 89=>false));


//*********** Define the function

function dump($data, $indent=0) {
  $retval = '';
  $prefix=\str_repeat(' |  ', $indent);
  if (\is_numeric($data)) $retval.= "Number: $data";
  elseif (\is_string($data)) $retval.= "String: '$data'";
  elseif (\is_null($data)) $retval.= "NULL";
  elseif ($data===true) $retval.= "TRUE";
  elseif ($data===false) $retval.= "FALSE";
  elseif (is_array($data)) {
    $retval.= "Array (".count($data).')';
    $indent++;
    foreach($data AS $key => $value) {
      $retval.= "\n$prefix [$key] = ";
      $retval.= dump($value, $indent);
    }
  }
  elseif (is_object($data)) {
    $retval.= "Object (".get_class($data).")";
    $indent++;
    foreach($data AS $key => $value) {
      $retval.= "\n$prefix $key -> ";
      $retval.= dump($value, $indent);
    }
  }
  return $retval;
}


//*********** Dump the data

echo dump($options);

?>
</pre>

ফলাফল ...

Array (4)
 [Orchestra] = Array (5)
 |   [1] = String: 'Strings'
 |   [8] = String: 'Brass'
 |   [9] = Object (stdClass)
 |   |   a -> Number: 123
 |   |   pl -> Number: 44
 |   |   l -> Array (2)
 |   |   |   [0] = Number: 31
 |   |   |   [1] = Number: 32
 |   [3] = String: 'Woodwind'
 |   [16] = String: 'Percussion'
 [2] = String: 'Car'
 [4] = String: 'Bus'
 [TV] = Array (5)
 |   [21] = String: 'Only Fools'
 |   [215] = String: 'Brass Eye'
 |   [23] = String: 'Vic Bob'
 |   [44] = NULL
 |   [89] = FALSE

1
আমি \ n পিএইচপি_ইএল-তে পরিবর্তন করেছি এবং উইন্ডোর সিএমডি থেকে পিএইচপি ব্যবহার করার সময় এটি দুর্দান্তভাবে কাজ করে
iewebguy

7

আমারটা এখানে:

class sbwDebug
{
    public static function varToHtml($var = '', $key = '')
    {
        $type = gettype($var);
        $result = '';

        if (in_array($type, ['object', 'array'])) {
            $result .= '
        <table class="debug-table">
            <tr>
            <td class="debug-key-cell"><b>' . $key . '</b><br/>Type: ' . $type . '<br/>Length: ' . count($var) . '</td>
            <td class="debug-value-cell">';

            foreach ($var as $akey => $val) {
                $result .= sbwDebug::varToHtml($val, $akey);
            }
            $result .= '</td></tr></table>';
        } else {
            $result .= '<div class="debug-item"><span class="debug-label">' . $key . ' (' . $type . '): </span><span class="debug-value">' . $var . '</span></div>';
        }

        return $result;
    }
}

স্টাইলযুক্ত:

table.debug-table {
  padding: 0;
  margin: 0;
  font-family: arial,tahoma,helvetica,sans-serif;
  font-size: 11px;
}

td.debug-key-cell {
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;
}

td.debug-value-cell {
  vertical-align: top;
  padding: 3px;
  border: 1px solid #AAAAAA;
}

div.debug-item {
  border-bottom: 1px dotted #AAAAAA;
}

span.debug-label {
  font-weight: bold;
}

2
আসলে খারাপ নয়। আপনি যদি আউটপুটটির উদাহরণ দেখিয়ে থাকেন তবে সম্ভবত আরও বেশি ভোট দেওয়া হত।
মাওগ বলছেন মনিকা

@acSlater আমার জন্য কাজ করে, আপনার কেবল sbwDebugসে ক্লাস তৈরি করতে হবে যা তিনি পোস্ট করতে ভুলে গিয়েছিলেন এবং এতে ফাংশনটি রেখেছিলেন।
ডেনিস98

6

আমি লাইব্রেরি, প্রি ট্যাগ এবং প্রতিটি অ্যাপ্লিকেশনটিতে কোনও ইনস্টলেশন না করে আমার ভার ডাম্পগুলিকে সুন্দর করার জন্য সম্প্রতি একটি ফ্রি ক্রোম এক্সটেনশন (প্রগতিতে কাজ করা) তৈরি করেছি। সমস্ত জাভাস্ক্রিপ্ট এবং regEx দিয়ে সম্পন্ন। আপনাকে যা করতে হবে তা হ'ল এক্সটেনশানটি ইনস্টল করা এবং আপনার যা করা ভাল। আমি ফায়ারফক্স সংস্করণেও কাজ করছি। এখানে গিটহাব পৃষ্ঠাটি রয়েছে। আমি আশা করি শীঘ্রই এটি ক্রোম এবং ফায়ারফক্স ওয়েবস্টোরগুলিতে উপলব্ধ হবে!

https://github.com/alexnaspo/var_dumpling

এখানে একটি উদাহরণ আউটপুট:

উদাহরণ আউটপুট


6
দারুন দোস্ত! সবেমাত্র আপনার এক্সটেনশানটি ডাউনলোড করেছেন এবং এটি পুরোপুরি কার্যকর হয়! ধন্যবাদ!
coryj

5
বন্ধু ... তোমাকে ধন্যবাদ আমি কিছুক্ষণের জন্য এরকম কিছু সন্ধান করছি
ব্রডবেন্ট

1
অবাস্তব। এখনও সেরা বিকল্প!
খ্রিস্টান

ফায়ারফক্স 15 দিয়ে চেষ্টা করা হয়েছে, এটি সামঞ্জস্যপূর্ণ নয় বলে জানিয়েছে। এটাকে বাইপাস করার কোনও সুযোগ?
সাইবারফ্লাই

1
এটি সুন্দর, আশা করি আমি তাড়াতাড়ি খুঁজে পেয়েছি!


2

ওসব শিরোনাম বাদে অভিনব লাইব্রেরিগুলি দুর্দান্ত ... আপনি যদি একটি সাধারণ, চমত্কার var_dump চান যা অসীম পরামিতি নেয় তবে আমার ফাংশনটি চেষ্টা করুন। এটি কিছু সাধারণ এইচটিএমএল যুক্ত করে। ডেটা বৈশিষ্ট্যগুলিও যুক্ত করা হয়, আপনি যদি এইচটিএমএল 5 ব্যবহার করেন তবে নিম্ন সংস্করণগুলি এগুলি উপেক্ষা করবে তবে ব্রাউজার কনসোলে উপাদান খুলতে সহজ করে তোলে এবং আপনি স্ক্রিনে যা দেখেন তা যথেষ্ট না হলে আরও কিছু তথ্য পাওয়া যায়।

লেআউটটি খুব সাধারণ, কোনও ওভারহেড নেই। প্রতিটি প্যারামিটারের জন্য অবজেক্ট ডাম্পের (এমনকি এক্সএমএল সহ) নাম gettypeএমনকি জিনিস সহ একাধিক তথ্য সরবরাহ করে class। এটি চেষ্টা এবং সত্য, আমি বছরের পর বছর ধরে এটি ব্যবহার করে আসছি।

function preDump() {    //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) {
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;padding:0em 3em 1em 1em;"><legend><b>preDump: '.count($args).' Parameters Found.</b></legend>';
        foreach (func_get_args() as $arg) {
            if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(preDump: )[0-9]+/', 'preDump: '.(count($args)-1), $sb); continue; }
            $sb .= '<pre data-type="'.gettype($arg).'"';
            switch (gettype($arg)) {
                case "boolean":
                case "integer":
                    $sb .= ' data-dump="json_encode"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= json_encode($arg);
                    break;
                case "string":
                    $sb .= ' data-dump="echo"><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')</b></p><p>';
                    $sb .= $arg;
                    break;
                default:
                    $sb .= ' data-dump="var_dump"';
                    if (is_object($arg)) $sb .= 'data-class="'.get_class($arg).'"';
                    $sb .= '><p style="border-bottom:1px solid;margin:0;padding:0 0 0 1em;"><b>gettype('.gettype($arg).')';
                    if (is_object($arg)) $sb .= ' ['.get_class($arg).']';
                    $sb .= '</b></p><p>';
                    ob_start();
                    var_dump($arg);
                    $sb .= ob_get_clean();
                    if (ob_get_length()) ob_end_clean();
            }
            $sb .= '</p></pre>';
        }
        $sb .= '</fieldset></div>';
    }
    else {
        $sb = '<div style="margin: 1em 0;"><fieldset style="display:inline-block;"><legend><b>preDump: [ERROR]</b></legend><h3>No Parameters Found</h3></fieldset></div>';
    }
    if ($doEcho) echo($sb);
    return $sb;
}

এবং আপনি যদি কোডইনিটার ব্যবহার করেন তবে এটিকেও আপনার সিআই অতিমাত্রায় যুক্ত করুন। প্রথমে যান application/config/autoload.phpএবং নিশ্চিত হয়ে নিন যে helper 'string'এটি চালু আছে।

$autoload['helper'] = array( 'string' ); 

তারপর কেবল নামে একজন ফাইল তৈরি হয়ে যেতে MY_string_helper.phpমধ্যে application/helpersএকটি টিপিক্যাল ফাংশন সন্নিবেশ এবং সহজ ifঅস্তিত্ব চেক জন্য বিবৃতি।

<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
    if (!function_exists('preDump')) {
        function preDump() {
            ...
        }
    }
//  DON'T CLOSE PHP

| OR |, আপনি যদি এটি অন্য কোনও দিক নিতে চান।

নীচের স্নিপেটটি উপরের মতোই, ব্রাউজার কনসোলে আপনার ভেরিয়েবলগুলি প্রদর্শন করবে except এটি কখনও কখনও এসকিএল অবজেক্ট কলগুলি এবং অন্যান্য অ্যারে এবং অবজেক্ট কলগুলি যেখানে আপনার মূল নাম বা যেকোন কিছু অনুপস্থিত তা ডিবাগ করা সহজ করে তুলতে পারে।

function consoleDump() {    //  use string "noEcho" to just get a string return only
    $args = func_get_args();
    $doEcho = TRUE; $sb;
    if ($args) {
        $sb = '<script type="text/javascript">console.log("<" + new Array('.(count($args) < 10 ? '49': '48').').join("-") + "[consoleDump: '.count($args).' items]" + new Array(50).join("-") + ">"); console.log([';

        foreach (func_get_args() as $i => $arg) {
            if (gettype($arg) == 'string') if ($arg == 'noEcho') { $doEcho = FALSE; $sb = preg_replace('/(consoleDump: )[0-9]+/', 'consoleDump: '.(count($args)-1), $sb); continue; }
            $sb .= '{ "type": "'.gettype($arg).'", ';
            switch (gettype($arg)) {
                case "boolean":
                case "integer":
                case "string":
                    $sb .= '"value": '.json_encode($arg);
                    break;
                default:
                    $sb .= '"value": '.json_encode($arg);
                    if (is_object($arg) || is_array($arg)) $sb .= ', "count": '.json_encode(count((array)$arg));
                    if (is_object($arg)) $sb .= ', "objectClass": "'.get_class($arg).'"';
            }
            $sb .= '}';
            if ($i < count($args)-1) $sb .= ', ';
        }
        $sb .= ']); console.log("<" + new Array(120).join("-") + ">"); </script>';
    }
    else {
        $sb = '<script type="text/javascript">console.log("<" + new Array(120).join("-") + ">");console.log("consoleDump: [ERROR] No Parameters Found");console.log("<" + new Array(120).join("-") + ">");</script>';
    }
    if ($doEcho) echo($sb);
    return $sb;
}

সবকিছু নিয়ে কাজ করে!

consoleDump($simpXMLvar, $_SESSION, TRUE, NULL, array( 'one' => 'bob', 'two' => 'bill' ), (object)array( 'one' => 'bob', 'two' => 'bill' ));


<------------------------------------------------[consoleDump: 6 items]------------------------------------------------->
[Object, Object, Object, Object, Object, Object] 
// This drops down to show your variables in JS objects, like:
    0: Object
        count: 4
        objectClass: "SimpleXMLElement"
        type: "object"
        value: Object
        __proto__: Object
        // ...etc...
<-----------------------------------------------------------------------------------------------------------------------> 

1
বিকাশের সরঞ্জামে তুচ্ছ কর্মক্ষমতা হ্রাসের বিষয়ে কেন একজনকে চিন্তিত করা উচিত? এই ফাংশনটি আক্ষরিক echo '<pre>';var_dump($var);echo '</pre>';আরও কিছু শূন্য-মান যুক্ত পাঠ্য।
রাভেরেন

@ রাভেরেন হ্যাঁ preDump('value', TRUE, array( 'bob => 'bill' ), (object)array( 'bob => 'bill' )' is quick and easy and gives a nice layout visually in the browser that shows each variable passed in it's own "area" with a type label, thus making debugging quick and easy. And since it's a snippet i keep in my IDE's toolbox, i can recall it with ease on any needed page or while working with any library. But sure, it's just an ইকো 'প্রে' বাদে ; এর আশেপাশের কয়েকটি সহ var_dump` simple html, 0-মান-যোগ করার পাঠ্য নয়। লোল কিক আপনি যদি এটি পছন্দ না করেন তবে এটি ব্যবহার করবেন না। শুধু একটি পরামর্শ।
SpYk3HH

@ রাভেরেন এবং যদি আপনি এটি পছন্দ করেন ... তবে আপনি আমার আপডেটটি সত্যই পছন্দ করবেন: পি
স্পাইকি

1

পিএইচপি অ্যারে বিউটিফায়ার এই সাধারণ সরঞ্জামটি পিএইচপি-তে একটি অ্যারে বা অবজেক্ট আউটপুট নেয় যেমন একটি মুদ্রণ_আর () বিবৃতি এবং সহজেই আপনার ডেটা পড়তে রঙিন কোডিংয়ে ফর্ম্যাট করে। http://phillihp.com/toolz/php-array-beautifier/


var_dump আউটপুট নিয়ে কাজ করে না, উদ্ধৃতিগুলি বিরতি দেয়, বড় ডাম্পগুলির জন্য অত্যন্ত বিভ্রান্ত দেখাচ্ছে।
রাভেরেন

1

তবুও অন্য একটি বাড়ির সংস্করণ:

http://github.com/perchten/neat_html

আমি এটি বেশ নমনীয় মনে করতে চাই। এটি নির্দিষ্ট আউটপুট পরিবেশের জন্য লক্ষ্য রাখে না তবে আউটপুট / মুদ্রণ বা আচরণের পাশাপাশি কিছু অবিচ্ছিন্ন সেটিংস কেন পরিবর্তন করতে হবে তা আপনি নির্দিষ্ট করতে পারেন optionচ্ছিক যুক্তিগুলির একটি গুচ্ছ।




1

আপনি যদি পিএইচপি-তে খুব বড় অ্যারে নিয়ে কাজ করেন তবে এই ফাংশনটি সাহায্য করতে পারে:

function recursive_print ($varname, $varval) {
  if (! is_array($varval)):
    print $varname . ' = ' . var_export($varval, true) . ";<br>\n";
  else:
    print $varname . " = array();<br>\n";
    foreach ($varval as $key => $val):
      recursive_print ($varname . "[" . var_export($key, true) . "]", $val);
    endforeach;
  endif;
}

এটি মূলত পুরো অ্যারেটি ডাম্প করে যেখানে প্রতিটি উপাদান পৃথক লাইনে থাকে যা নির্দিষ্ট উপাদানগুলির জন্য সঠিক পুরো পথগুলি সন্ধান করার জন্য উপকারী।

উদাহরণ আউটপুট:

$a = array();
$a[0] = 1;
$a[1] = 2;
$a[2] = array();
$a[2][0] = 'a';
$a[2][1] = 'b';
$a[2][2] = 'c';

দেখুন: প্রতিটি কী-মান জুটি পৃথক লাইনে থাকা পিএইচপি অ্যারে কীভাবে রফতানি করবেন?


1

আমি অবাক হয়েছি কেউই সবচেয়ে সহজ (যদিও খুব সুন্দর না) কোডটি উল্লেখ করেনি। আপনি শুধুমাত্র একটি পাঠযোগ্য আউটপুট (কোন রং বা খাঁজ), একটি সহজ পেতে চান <pre>একটি প্রায় var_dumpহিসাবে কাজ,:

echo "<pre>";
var_dump($myvariable);
echo "</pre>";

এর চেয়ে অনেক কম ওভারহেড পাওয়া যায় না!


0

আমি ক্রমোর মতোই একটি ছোট ক্লাস লিখেছি তবে অ্যাপে এম্বেড করা আরও সহজ।

এখানে লিঙ্কটি দেওয়া হয়েছে: https://github.com/langpavel/PhpSkelet/blob/master/Class/Debug.php

এবং এখানে নমুনা আউটপুট: http://langpavel.php5.cz/debug_sample.html


ডেমোটি নষ্ট হয়ে গেছে, যদিও কোডটি
গিটহাবটিতে

0

আমার পছন্দেরটি https://github.com/hazardland/debug.php থেকে ডিবাগ করা হয়েছে যা কেবলমাত্র একক ফাংশনযুক্ত ডিবাগ নামে লাইব্রেরি রয়েছে (আপনি কেবলমাত্র আপনার প্রকল্পে বা আপনার লাইব্রেরিতে সেই ফাংশনটি অনুলিপি করতে পারেন) । টিপিকাল ডিবাগ () এইচটিএমএল আউটপুটটি এর মতো দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

তবে আপনি এই জাতীয় ফাংশন (4 স্পেস ইনডেন্টড ট্যাব সহ) সমেত পাঠ্য হিসাবে ডেটা আউটপুট করতে পারেন (এবং প্রয়োজনে এটি ফাইলটিতে লগও করুন):

string : "Test string"
boolean : true
integer : 17
float : 9.99
array (array)
    bob : "alice"
    1 : 5
    2 : 1.4
object (test2)
    another (test3)
        string1 : "3d level"
        string2 : "123"
        complicated (test4)
            enough : "Level 4"

0

TVarDumper

এটি একটি দুর্দান্ত সরঞ্জাম যা বগী পিএইচপি ফাংশন প্রতিস্থাপনের উদ্দেশ্যে var_dumpএবং print_rএটি একটি জটিল অবকাঠামো কাঠামোয় পুনরাবৃত্তভাবে রেফারেন্স করা অবজেক্টগুলিকে সঠিকভাবে সনাক্ত করতে পারে। কিছু অদ্ভুত ভেরিয়েবলের অনির্দিষ্ট পুনরাবৃত্তি প্রদর্শন এড়াতে এটির পুনরাবৃত্ত গভীরতা নিয়ন্ত্রণও রয়েছে।

দেখুন: TVarDumper.php


অন্যান্য বিকল্প সমাধানগুলির জন্য যা আরও বেশি সুবিধাদি সরবরাহ করে var_dumpএবং print_rবিজ্ঞপ্তি সংক্রান্ত রেফারেন্সগুলিকে সমর্থন করতে পারে, দয়া করে পরীক্ষা করুন: বিজ্ঞপ্তি রেফারেন্স সহ print_r এবং var_dump ব্যবহার করুন


আরও ধারণাগুলির জন্য এটিও দেখুন: আপনি কীভাবে পিএইচপি স্ক্রিপ্টগুলি ডিবাগ করবেন?


0

খনি, আরও সহজ, আমার কাছে আমার অবকাঠামো ইনস্টল করার জন্য xdebug ইত্যাদির অনেক জ্ঞান / সময় নেই etc.

এবং অন্যান্য ক্ষেত্রে, ভাল উদাহরণস্বরূপ আপনার জন্য একটি সহজ ডাব্লুপি ওয়েবসাইটের জন্য খুব বেশি প্রয়োজন নেই

সুতরাং আমি ব্যবহার:

highlight_string("\n<?" . var_export($var, true) . "?>\n");

এটা সত্যিই আমাকে অনেক সাহায্য করে

তবে আমি ডিভনসনোল এনভায়রনমেন্টকে প্রাধান্য দেওয়ার কারণে আমি এই দুর্দান্ত কিন্তু সাধারণ ফাংশনটি ব্যবহার করি:

https://codeinphp.github.io/post/outputting-php-to-browser-console/

সামান্য ত্বক:

<?php 

/**
 * Logs messages/variables/data to browser console from within php
 *
 * @param $name: message to be shown for optional data/vars
 * @param $data: variable (scalar/mixed) arrays/objects, etc to be logged
 * @param $jsEval: whether to apply JS eval() to arrays/objects
 *
 * @return none
 * @author Sarfraz
 */
function logConsole($name, $data = NULL, $jsEval = FALSE)
{
     if (! $name) return false;

     $isevaled = false;
     $type = ($data || gettype($data)) ? 'Type: ' . gettype($data) : '';

     if ($jsEval && (is_array($data) || is_object($data)))
     {
          $data = 'eval(' . preg_replace('#[\s\r\n\t\0\x0B]+#', '', json_encode($data)) . ')';
          $isevaled = true;
     }
     else
     {
          $data = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
     }

     # sanitalize
     $data = $data ? $data : '';
     $search_array = array("#'#", '#""#', "#''#", "#\n#", "#\r\n#");
     $replace_array = array('"', '', '', '\\n', '\\n');
     $data = preg_replace($search_array,  $replace_array, $data);
     $data = ltrim(rtrim($data, '"'), '"');
     $data = $isevaled ? $data : ($data[0] === "'") ? $data : "'" . $data . "'";

$js = <<<JSCODE
\n<script>
// fallback - to deal with IE (or browsers that don't have console)
if (! window.console) console = {};
console.log = console.log || function(name, data){};
// end of fallback

console.log('===== PHP Dump =====');
console.log('$name');
console.log('$type');
console.log($data);
console.log('===== / PHP Dump =====');
console.log('\\n');
</script>
JSCODE;

     echo $js;
} # end logConsole

0

আরেকটি বিকল্প হল

composer require symfony/var-dumper --save-dev

তারপরে আপনার ফাইলে আপনি কেবল ব্যবহার করুন dump($var) এবং আপনি এর মতো একটি আউটপুট শেষ করবেনএখানে চিত্র বর্ণনা লিখুন


0

আমাকে এখানে আরও একটি উত্তর যুক্ত করতে হয়েছিল কারণ আমি অন্যান্য সমাধানের ধাপগুলি দিয়ে যেতে চাই না। এটি অত্যন্ত সহজ এবং এতে কোনও এক্সটেনশন প্রয়োজন নেই, ইত্যাদি অন্তর্ভুক্ত এবং এটি আমার পছন্দ। এটি খুব সহজ এবং খুব দ্রুত।

প্রথমে কেবল প্রশ্নে ভেরিয়েবল json_encode করুন:

echo json_encode($theResult);

আপনি জেএসএন সম্পাদকে যে ফলাফলটি অনুলিপি করেছেন সেটিকে অনুলিপি করুন : http://jsoneitoronline.org/ এ কেবল বাম পাশের ফলকে অনুলিপি করুন, অনুলিপি করুন> এ ক্লিক করুন এবং এটি জাসনকে একটি দুর্দান্ত গাছের বিন্যাসে প্রিন্ট করে।

প্রত্যেকের নিজেরাই, তবে আশা করি এটি অন্য কারও কাছে আরও একটি দুর্দান্ত বিকল্প পেতে সহায়তা করে! :)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.