سؤال

أنا أعمل في مشروع Zend وقد مر أكثر من 12 شهرًا منذ أن لمست Zend ، وأتلقى خطأ في إحدى وظائفاتي ، ولا يمكنني معرفة سبب ذلك ، أعتقد أنه قد يكون مُصممًا في الأصل في إصدار سابق من PHP (5.2) وأنا الآن أقوم بتشغيل 5.3.

الوظيفة تبدو هكذا ،

public function addDebug($mixedObject, $title = "")
    {
        $debugObject = new stdClass();
        $debugObject->title       = $title;   
        $debugObject->type        = gettype($mixedObject);
        $debugObject->className   = (!get_class($mixedObject)) ? "" : gettype($mixedObject);<-- Line error is complaining about -->
        $debugObject->mixedObject = $mixedObject; 
        array_push($this->debugArr, $debugObject);
    }

رسالة الخطأ كما يلي ،

get_class() expects parameter 1 to be object, array given in /server/app/lib/View.php on line 449

أي نصيحة بشأن هذه القضية ستكون جيدة.

هل كانت مفيدة؟

المحلول

ال get_class تتطلب الوظيفة أن تكون المعلمة كائنًا. الخطأ يقول ذلك $ mixedobject هي صفيف.

قد يساعد في التحقق مما إذا كان $ mixedObject هو كائن أولاً:

$debugObject->className = is_object($mixedObject) ? get_class($mixedObject) : '';

نصائح أخرى

هل قمت بالفعل بتسجيل ما إذا كان "$ mixedobject" هو حقًا كائن؟ لأن الخطأ يقول بالضبط أنه ليس كذلك.

يمكنك وضع شيك ما إذا كان $ mixedobject هو كائن أم لا:

if (is_object($mixedObject)) { 
    $debugObject->className   = get_class($mixedObject);
} else {
    $debugObject->className   = gettype($mixedObject);
}

تحرير: أرى أيضًا بعض الأخطاء الأخرى ، حيث تقوم Get_Class بإرجاع سلسلة بحيث يكون التحقق من هذا السطر دائمًا "صحيحًا" (أو خطأ لأنك تنفيها) ثم سيتم تعيين سلسلة فارغة. جربه مثل المثال أعلاه.

إنه يتوقع تمرير كائن ولكنك تقوم بتعيينه كسلسلة فارغة وتمريره بعد علامة الاستفهام.

يبدو أنك تمر $mixedObject مجموعة.

تحقق من هذا var is_object ثم استخدم gettype (إذا كان خطأ) أو get_class (إذا كان هذا صحيحا).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top