2017-09-05 9 views
-2

」get_price()次の関数は、致命的なエラーをスローします。エラーが私に正確に何を教えてくれるのですか?「致命的なエラー:キャッチされていないエラー:メンバ関数の呼び出し」のブール値で「

機能:

$product = wc_get_product($product_id); 
$price = $product->get_price(); 

エラー:

Fatal error: 
Uncaught Error: Call to a member function get_price() on boolean in 

これは私が戻って代わりに文字列または数値のブール値を取得することを意味するのでしょうか?エラーが$productがブール値である場合、この行

$product = wc_get_product($product_id); 

が失敗した

+0

チェックだけではないのはなぜですか?あなたのIDEデバッガを使用するか、返されたものを単純にvarダンプしてください。 – JimL

+0

@JimL良い質問。このエラーはテストインストールでは発生していませんが、他の誰かの電子商取引ショップで発生しています。私はそのインストールにアクセスできない。 – alev

+2

* OBJECT * – Scuzzy

答えて

3

Does this mean that I get a boolean back instead of a string or number?

にあるもの確認することで開始される可能性があります。あなたの$ product_idが存在しないと仮定し、その場合wc_get_product()はfalseを返します。しかし、ドキュメント(https://docs.woocommerce.com/wc-apidocs/function-wc_get_product.html)は、存在しない製品(WooCommerceを使用している場合)ではメソッドがnullを返すと述べています。

And:文字列または数値のメソッド呼び出しも機能しません。コードスニペット内のオブジェクトが必要です。

更新

ここにも他の提案のために注意してください。

戻り値の型が異なるメソッド(この場合はbool/object)を使用している場合は、オブジェクトとして使用する前に必ず応答をチェックする必要があります。この問題を解決するために

+0

これは役に立ちます。おそらくあなたは正しいでしょう。その場合、基礎を成すeコマースショップにはおそらく、製品ページの非標準実装があります。 – alev

2

)私はget_priceを(呼び出しラインから来ています!

あなたは正確に$product_id

+0

エラーは私がget_price()を呼び出す行から来ています。その場合、あなたは同じ答えをしていますか? – alev

+1

はい。 'wc_get_product($ product_id)'が '$ product'を成功させた場合、オブジェクトは – RiggsFolly

+0

になります。おそらくあなたは正しいでしょう。その場合、基礎を成すeコマースショップにはおそらく、製品ページの非標準実装があります。 – alev

1

一つの方法は、あなたがfutherのいずれかのロジックを追加したり、エラーをスローする可能性pointn

れる

$product = wc_get_product($product_id) 
if($product instanceof WC_Product) 
{ 
    $price = $product->get_price(); 
} 
期待される関数を呼び出す前に期待クラスをチェックすることです。

+0

興味深い。 FOOとは何ですか?製品クラスですか? – alev

+2

FOO(google for "foo bar")は単なるプレースホルダです。 "instance of"は、変数が特定のオブジェクトのインスタンスであるかどうかをチェックするPHP演算子です。 あなたのケースでは、WC_Productの$ productインスタンスは、おそらくあなたのニーズに合ったコードでしょう。 – iquellis

+0

ソリューションを実装すると、致命的なエラーが発生することはありません。しかし店のオーナーは、何かがそうでないように見えることはありません(私のコードはほとんど役に立たなくなっています)。少なくとも警告を出してデバッグエントリを追加するように自分のコードを変更することをお勧めしますか?それともそれをそのままにしておく方が良いのでしょうか?その場合(今日のように)、私は店主の電子メールを受け取り、根本的な問題が彼の側にあると説明することができます。 – alev

関連する問題