我已经多次问过这个问题了,但是我感到困惑并遇到了类似的情况.我不确定这个和我的背景是否相同,只要我确信这是一个不同的场景,否则我可能会误解这个解释.好的,这是我的情景:
$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
如果该功能不存在.对此可能有什么解决方案?解释将被认为是有帮助的.
请求:请添加一个充分的评论,说明为什么问题被投票,以便我将来能够改进我的问题.
改变这个:
$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