错误:方法__toString()不能抛出异常,捕获错误:在null

时间:2017-05-19 11:49:38

标签: php

我是php新手,我经常看到这个错误,但我总是不确定如何解决这个问题,有人可以帮我解决一下这个方法吗?

这是我的__toString()方法:

/**
 * @return string
 */
public function __toString(): string
{
    return (string)$this->name .' - '. $this->surname .' - '. $this->getSubject()->getCode();
}

谢谢

1 个答案:

答案 0 :(得分:1)

导致此错误的原因是__toString()方法中的某些内容导致异常。

由于错误说方法getSubject()返回null值,然后调用null->getCode()会抛出异常。更好的解决方案是:

public function __toString(): string
{
    $subj = $this->getSubject();
    $code = is_null($subj) ? "" : $subj->getCode(); /* instead of empty string can be any value you want when subject is missing */

    return (string)$this->name .' - '. $this->surname .' - '. $code;
}