Symfony 4 和 Doctrine - 为什么 Doctirne 生成一个 `$__EXTRA_LINE` 变量的多个声明?

Symfony 4 and Doctrine - Why is Doctirne generating multiple declarations of an `$__EXTRA_LINE` variable?

我正在使用 Doctrine CLI 在已经存在的实体上生成一个 ManyToOne 关联。

生成的代码在变量 $__EXTRA_LINE 的多个声明中丢失,甚至没有从 class 使用 $this-> 调用。

这显然是在调用 php bin/console make:migration 或 运行 脚本时由于多重声明而导致的错误,以及由于函数中未定义的变量而导致的错误(未使用 $this->在函数体中)。

生成的代码如下:

private $__EXTRA__LINE; // 1
/**
* @return Collection|JobInvoice[]
*/
public function getJobInvoices(): Collection
{
    return $this->job_invoices;
}
private $__EXTRA__LINE; // 2
public function addJobInvoice(JobInvoice $jobInvoice): self
{
    if (!$this->job_invoices->contains($jobInvoice)) {
        $this->job_invoices[] = $jobInvoice;
        $jobInvoice->setInvoice($this);
    }
    $__EXTRA__LINE; // no '$this->'
    return $this;
}
private $__EXTRA__LINE; // 3
public function removeJobInvoice(JobInvoice $jobInvoice): self
{
    if ($this->job_invoices->contains($jobInvoice)) {
        $this->job_invoices->removeElement($jobInvoice);

        // set the owning side to null (unless already changed)
        if ($jobInvoice->getInvoice() === $this) {
         $jobInvoice->setInvoice(null);
        }
    }
    $__EXTRA__LINE; // no '$this->'
    return $this;
}

什么可能导致此错误或不是错误,它的发生是否出于对此 ManyToOne 工作很重要的原因?

我在项目中找到了vendor文件夹:

    // this fake property is a placeholder for a linebreak
    $newCode = str_replace('    private $__EXTRA__LINE;', '', $newCode);

    /vendor/symfony/maker-bundle/src/Util/ClassSourceManipulator.php line 611

也许对你有帮助