-4

重複の可能性:
Mage :: registerry('current_category')がNULLを返す理由は何ですか?
参照-このエラーはPHPで何を意味しますか?

致命的なエラー:...内の非オブジェクトでメンバー関数getParentCategory()を呼び出す

コード:

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

現在、ページでgetParentCategory()を使用できない場合は、次を使用しますが、機能しません。

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

なぜ?ありがとうございました

4

3 に答える 3

4

$_category_detailオブジェクトではないようです。したがってMage::registry('current_category')、オブジェクトを返していません。

失敗すると、ある種の値NULLまたは値を返す可能性があります。そしてPHPはあなたにそれが無意味falseであることに気づかせています。(NULL)->getParentCategory()

current_category特定のケースでは、レジストリにが設定されていないため、NULLを返します。

于 2012-12-19T08:42:16.497 に答える
2

method_exists()存在しない関数を呼び出そうとするのではなく、使用する必要があります。

if (method_exists($_category_detail, "getParentCategory"))
于 2012-12-19T08:43:37.523 に答える
1

isset() はメンバー変数のみをチェックします。method_exists() を使用します。

PHP マニュアル: http://php.net/manual/de/function.method-exists.php

if (method_exists($_category_detail, 'getParentCategory')) {
    $id = $_category_detail->getParentCategory()->getId()
}
于 2012-12-19T08:43:41.773 に答える