Amir Alsaeed نشر 6 مارس 2021 أرسل تقرير نشر 6 مارس 2021 لدي مصفوفة مكونة من 320 مصفوفة أخرى، عند استخدامي للتابع var_dump يتم طباعة جميع العناصر ال 320 مع كل العناصر الأبناء، ولكن عند استخدام التابع dd يتم إخفاء العناصر الأبناء بدءً من العنصر رقم 147 وبدون أي خيار لتوسيع العنصر ورؤية محتواه: 147 => array:17 [▼ "total_unconfirmed_subscribers" => 0 …16 ] 148 => array:17 [ …17] /--> لا يوجد خيار لتوسعة العنصر 149 => array:17 [ …17] حتى مع استخدام php artisan tinker أحصل على نفس النتيجة. هل التابع dd محدود فقط لطباعة 147 عنصر؟ اقتباس
0 Sam Ahw نشر 6 مارس 2021 أرسل تقرير نشر 6 مارس 2021 في نسخ لارافيل ماقبل 5.0 كان التابع dd بهذا الشكل: function dd() { array_map(function($x) { var_dump($x); }, func_get_args()); die; } ولكن بدءً من النسخة 5 وما فوق أصبح بالشكل التالي: function dd() { array_map(function ($x) { (new Dumper)->dump($x); }, func_get_args()); die(1); } بما أن Dumper يستخدم Symfony VarCloner وبالتالي AbstractCloner وهذا الصف بدوره له قيمة $maxItems تساوي بشكل افتراضي 2500. وفي حال كان لديك 17 عنصر في كل مصفوفة، إن ناتج الضرب ب 147 = 2499 ولذلك المصفوفة بعد العنصر 147 يتم إزالة مقطعها الأخير أي العناصر الأبناء. في حال أردت زيادة القيمة الافتراضية لصف Dumper، يمكن ذلك بعمل Override له كالتالي: public function dump($value) { if (class_exists(CliDumper::class)) { $dumper = 'cli' === PHP_SAPI ? new CliDumper : new HtmlDumper; $cloner = new VarCloner(); $cloner->setMaxItems(5000); $dumper->dump($cloner->cloneVar($value)); } else { var_dump($value); } } ومن إحدى الحلول الأخرى، نقوم بإنشاء صف مساعد جديد helper وتضمينه في bootstrap: use Illuminate\Support\Debug\HtmlDumper; use Symfony\Component\VarDumper\Cloner\VarCloner; use Symfony\Component\VarDumper\Dumper\CliDumper; function ddd() { $args = func_get_args(); $defaultStringLength = -1; $defaultItemNumber = -1; $defaultDepth = -1; foreach ($args as $variable) { $dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper(); $cloner = new VarCloner(); $cloner->setMaxString($defaultStringLength); $cloner->setMaxItems($defaultItemNumber); $dumper->dump($cloner->cloneVar($variable)->withMaxDepth($defaultDepth)); } die(1); } 2 اقتباس
السؤال
Amir Alsaeed
لدي مصفوفة مكونة من 320 مصفوفة أخرى، عند استخدامي للتابع var_dump يتم طباعة جميع العناصر ال 320 مع كل العناصر الأبناء، ولكن عند استخدام التابع dd يتم إخفاء العناصر الأبناء بدءً من العنصر رقم 147 وبدون أي خيار لتوسيع العنصر ورؤية محتواه:
147 => array:17 [▼ "total_unconfirmed_subscribers" => 0 …16 ] 148 => array:17 [ …17] /--> لا يوجد خيار لتوسعة العنصر 149 => array:17 [ …17]
حتى مع استخدام php artisan tinker أحصل على نفس النتيجة.
هل التابع dd محدود فقط لطباعة 147 عنصر؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.