2010-05-20 6 views
2

젠드 프로젝트를 진행 중이고 젠드를 만난 지 12 개월이 넘었으며 내 기능 중 하나에서 오류가 발생했습니다. 이유를 찾지 못해 생각합니다. PHP (5.2)의 이전 버전에서 원래 빌드 된 사이트로 내려 갔고 현재 5.3을 실행 중입니다.get_class와 관련된 PHP 문제

기능은 좋은 것입니다 다음과 같은 오류 메시지가

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

,이 같은 문제에 대한 조언을 보인다.

+1

그리고 실제로 오류 메시지의 내용을 읽었습니까? 객체가 아니라 addDebug 함수에 배열을 전달하고 있다는 오류가 이미 발생했기 때문입니다. 따라서 논리 (즉, get_class 호출)가 잘못되었거나 잘못된 유형의 매개 변수를 함수에 전달 중입니다. – wimvds

답변

2

get_class 함수는 매개 변수가 개체 여야합니다. 오류는 $ mixedObject이 배열임을 나타냅니다. "$ mixedObject는"정말 객체 인 경우

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

테이블에 새로운 것을 새로 가져 오지는 않습니다. – Sam152

+0

예, 편집 중입니다. 죄송합니다. – Shiki

2

이미 확인 했 : $ mixedObject 객체가 처음 인 경우

이 확인하는 데 도움이? 오류가 정확히 표시되지 않기 때문입니다.

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

편집 : 나는 또한 다른 오류를 참조하십시오 get_class는 문자열을 반환하면 해당 라인에 체크가 항상 될 수 있도록 주어진 $ mixedObject가 객체인지 아닌지

당신은 수표를 둘 수 있었다 "true"(또는 당신이 그것을 무효화하기 때문에 false) 그리고 빈 문자열이 설정 될 것입니다. 위 예제와 같이 사용해보십시오.

1

개체가 전달되기를 기대하지만 빈 문자열로 설정하고 물음표 뒤에 전달합니다.

+0

그 사항이 맞지 않습니다. get_class가 호출 될 때 오류가 발생합니다. 이 시점에서 $ mixedObject는 함수에 전달 된 값입니다. gettype의 빈 문자열/반환 값 할당은 $ debugObject-> className으로 이동합니다. – enricog

0

배열을 $mixedObject으로 전달한 것처럼 보입니다.

이 var를 is_object으로 확인한 다음 gettype (false 인 경우) 또는 get_class (true 인 경우)을 사용하십시오.