web-dev-qa-db-ja.com

Visual Studio Code PHP Intelephense)

IntelePhenseを使ってVisual Studioコードを使用してSymfony 4プロジェクトに取り組んでいます。

Intelephenseはエラーを取得します。例がいくつかあります。

未定義の方法「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に存在します。

<?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
{
 _

そして私に問題があるファイル内の使用コマンド

<?php

namespace App\Controller\advert;

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

問題がどこにあるのかわかりません。結果のない日を検索しました。

誰かがこの問題の起源についてのアイデアを持っているでしょうか?

3

Visual Studio Code Extensionsをアンインストールおよび再インストールすることで解決しました。

0