2012-12-19 2 views
-4

Possible Duplicate:
Any reason why Mage::registry(‘current_category’) would return NULL?
Reference - What does this error mean in PHP?치명적인 오류를 방지하는 방법 : 멤버 함수를 호출 하시겠습니까?

치명적인 오류 : 페이지를 사용할 수 없을 때, 지금

$_category_detail=Mage::registry('current_category'); 
$id=$_category_detail->getParentCategory()->getId(); 

:에 ...

가 아닌 객체() 멤버 함수의 getParentCategory에 코드를 호출 getParentCategory() 나는 다음을 사용하지만 작동하지 않습니다.

if(isset(getParentCategory()){ 
     $id=$_category_detail->getParentCategory()->getId(); 
    } 

왜? 고마워요

답변

2

당신은 오히려 존재하지 않는 함수를 호출하는 것보다 method_exists()를 사용해야합니다 : 멤버 변수에 대한

if (method_exists($_category_detail, "getParentCategory")) 
+0

는 오류를 트리거하지 않습니다? – Shoe

+0

그럴 필요가 없습니다 - 직접 테스트 해보세요 ... 문서도 metion도 테스트도 오류도 아닙니다;)'false'를 반환합니다. –

4

그것은 $_category_detail 개체가 아닙니다 나타납니다. 따라서 Mage::registry('current_category')은 개체를 반환하지 않습니다.

오류가 발생하면 NULL 또는 false 값이 반환 될 가능성이 큽니다. 그리고 PHP는 (NULL)->getParentCategory()이 의미가 없다는 사실을 알려줍니다.

current_category이 (가) 레지스트리에 설정되지 않았으므로 NULL이 반환됩니다.

1

는 isset()는 검사. method_exists()를 사용하십시오.

PHP 매뉴얼 : $의 _category_detail`가 유효한 객체가 아닌`경우 http://php.net/manual/de/function.method-exists.php

if (method_exists($_category_detail, 'getParentCategory')) { 
    $id = $_category_detail->getParentCategory()->getId() 
} 
관련 문제