本文介绍了Visual Studio Code PHP Intelephense 收到错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Visual Studio Code 和 Intelephense 开发一个 Symfony 4 项目.

I'm working on a Symfony 4 project using Visual Studio Code with Intelephense.

Intelephense 得到的错误不是.有一些例子:

Intelephense gets errors which aren't. There are some examples:

未定义的方法uasort".

此代码对应的错误:

// Collection creation of seasons used in the periods
$seasons = new ArrayCollection();
$sortedSeasons = new ArrayCollection();

//Search seasons used by periods
foreach ($advert->getPeriods() as $period)
{
    $season = $period->getSeason();
    if (! $seasons->contains($season))
    {
        $seasons->add($season);
    }
}

// Sort seasons by ascending cost
$iterator = $seasons->getIterator();
$iterator->uasort(function ($a, $b) {
    return $a->getCost() <=> $b->getCost();
});

另一个例子:

未定义的方法getAdvertMinPrice".

$minPrices = $this->getDoctrine()->getRepository(Price::class)->getAdvertMinPrice($advert);

但是,该方法存在于 PriceRepository 中:

However, the method exists in the PriceRepository:

<?php
namespace App\Repository\advert;

use App\Entity\advert\Price;
use Symfony\Bridge\Doctrine\RegistryInterface;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;

/**
 * @method Price|null find($id, $lockMode = null, $lockVersion = null)
 * @method Price|null findOneBy(array $criteria, array $orderBy = null)
 * @method Price[]    findAll()
 * @method Price[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
 */
class PriceRepository extends ServiceEntityRepository
{
    public function __construct(RegistryInterface $registry)
    {
        parent::__construct($registry, Price::class);
    }

   /**
    * Get the minimum price from an advert
    *
    * @param [type] $advert
    * @return Price[]
    */
    public function getAdvertMinPrice($advert): array
    {
        return $this->createQueryBuilder('p')
            ->andWhere('p.price = (
                            SELECT MIN(p2.price)
                            FROM ' . $this->_entityName . ' p2
                            WHERE p2.advert = :val
                        )'
                       )
            ->setParameter('val', $advert)
            ->getQuery()
            ->getResult()
            ;
        }
    }

有价格命名空间:

<?php

namespace App\Entity\advert;

use App\Entity\advert\Advert;
use App\Entity\advert\Period;
use App\Entity\backend\Season;
use App\Entity\backend\Duration;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * @ORM\Entity(repositoryClass="App\Repository\advert\PriceRepository")
 *
 * @UniqueEntity(
 *     fields={"duration", "season"},
 *     message="A price already exists for this season and this duration."
 * )
 */
class Price
{

以及我遇到问题的文件中的 use 命令:

And the use command in the file where I have the problem:

<?php

namespace App\Controller\advert;

use App\Entity\backend\VAT;
use App\Entity\advert\Price;

我不明白问题出在哪里.我已经搜索了几天没有结果.

I don't understand where is the problem. I have searched for days without result.

有人会知道这个问题的起源吗?

Somebody would have an idea about this problem origin?

推荐答案

通过卸载并重新安装 Visual Studio Code 扩展解决.

Solved by uninstalling and reinstalling Visual Studio Code extensions.

这篇关于Visual Studio Code PHP Intelephense 收到错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-22 15:06