لماذا var_dump كائنات عقيدة تقتل بلدي أباتشي؟
سؤال
ولدي مشكلة غريبة جدا، وعندما أحاول أن var_dump
(أو print_r
) كائن عقيدة، والاستجابات أباتشي بلدي مع صفحة فارغة فارغة (200 موافق رأس). أستطيع أن var_dump
بي إتش بي فار عادي مثل:
$dummy = array("a" => 1, "b" =>2);
وأنه يعمل بشكل جيد. ولكن لا أستطيع مع أي كائن من أي فئة عقيدة، (مثل نتيجة لذلك من $connection->query()
، أو مثيل لفئة من طراز كائن بلدي مع عقيدة).
وأي شخص يعرف لماذا يحدث هذا؟
المحلول
ولقد كان في بعض الأحيان عند محاولة print_r()
كائن المرجعية الذاتية - يحصل في حلقة ونفدت الذاكرة. ربما هذا ما يحدث لك.
وحاول زيادة الحد الذاكرة (ini_set('memory_limit', '256M');
) ومعرفة ما إذا كان يصلح له.
وتحرير: أنا لا أعتقد أن هناك أي الإصلاح الفعلي لهذا - انها PHP في داخلي var_dump
/ print_r
التي لا تحد من عمق في العودية (أو لا تفعل ذلك بشكل صحيح، على الأقل). إذا قمت بتثبيت XDebug الإرشاد، وهذا يمكن أن تحل محل المدمج في var_dump
مع الإصدار الذي يعالج العودية أفضل بكثير.
نصائح أخرى
وكلاء تحميل كسول تحتوي دائما مثيل EntityManager عقيدة وجميع الأقاليم التابعة لها.
ولذا فإن var_dump
ربما تفريغ بنية العودية كبير جدا وهو أمر مستحيل لتقديم وقراءة. لديك لاستخدام \Doctrine\Common\Util\Debug::dump()
للحد من إلقاء إلى مستوى مقروء الإنسان. لاحظ أنه يتم تعيين عمق الافتراضي لهذه الوظيفة ل2 (وهو المعلمة الثانية)
استخدم طريقة toArray
الطبقة Doctrine_Record
var_dump($doctrine_record->toArray());
وسيتم عرض فقط الحقول DB وتجنب الإغراق في الداخلية عقيدة كاملة (الذي يحتوي على إشارة الذات / العودية راجع للشغل)
ويمكنك استخدام toArray إذا كنت متأكدا من الكائن مثيل Doctrine_Collection. Xdebug لا يساعد مع سجلات المذهب.
والطريقة أقترح على تنفيذ وظيفة متكررة مخصصة لطباعة الكائن، التي تستخدم Doctrine_Record :: toArray () عند neeeded
function var_dump_improved()
{
foreach (func_get_args() as $arg) {
if ($args instanceof Doctrine_Collection) {
print_r($arg);
} else if ( $arg instanceof Traversable || is_array($arg) ) {
// do a foreach and recall var_dump_improved on subelements
} else if (...) {
// other types
}
}
}
وبعض وظيفة عودي إلى تصحيح مع مستويات التداخل ماكس هنا
http://php.net/manual/en/function.var- dump.php
ونظرة على التعليقات، والبحث عن "عودية"