PHP致命错误无法在写上下文中使用方法返回值

ro *_* ko 1 php

我已经多次问过这个问题了,但是我感到困惑并遇到了类似的情况.我不确定这个和我的背景是否相同,只要我确信这是一个不同的场景,否则我可能会误解这个解释.好的,这是我的情景:

$amount = isset($cost->getCostAmount()) ? $cost->getCostAmount() : 0;
Run Code Online (Sandbox Code Playgroud)

函数costAmount()在运行时动态添加,可能存在也可能不存在.所以我需要首先检查我的功能是否存在,休息非常清楚.但现在在这种情况下,我得到一个致命的错误:

致命错误:无法在..../file.php中的写入上下文中使用方法返回值

现在,如果我做这样的事情:

$amount = $cost->getCostAmount() ? $cost->getCostAmount() : 0;
Run Code Online (Sandbox Code Playgroud)

显然我会收到一个错误:

调用未定义的方法:getCostAmount

如果该功能不存在.对此可能有什么解决方案?解释将被认为是有帮助的.

请求:请添加一个充分的评论,说明为什么问题被投票,以便我将来能够改进我的问题.

Pet*_*ter 8

改变这个:

$amount = isset($cost->getCostAmount()) ? $cost->getCostAmount() : 0;
Run Code Online (Sandbox Code Playgroud)

至..

$amount = method_exists($cost, 'getCostAmount') ? $cost->getCostAmount() : 0;
Run Code Online (Sandbox Code Playgroud)

因为这段代码即使不存在isset($cost->getCostAmount())也在执行方法getCostAmount