Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Laravel PHPStorm podpowiadanie metod
Forum PHP.pl > Inne > Komputery i oprogramowanie
john_doe
Jeśli nie ten dział przepraszam.
Piszę w PHPStorm ..... nie podpowiada mi metod kiedy rozszerzam jakąś klasę nadrzędną. Czy to jest normalne w PHP i ich IDE?
Jak sobie radzicie z tym fantem?
nospor
Mi dziala. przenosze
Pyton_000
U mnie działa...

Pokaż case w którym Ci nie działa.
john_doe
  1.  
  2. interface ICrudRepository {
  3.  
  4. /**
  5.   * Returns ................
  6.   * @param int $id
  7.   * @param string[] $options
  8.   * @return Model|null
  9.   */
  10. public function get(int $id, array $options);
  11. }
  12.  
  13. // Implementacja
  14. abstract class CrudRepository implements ICrudRepository
  15. {
  16. // wiadomo
  17. }
  18.  
  19. // i teraz
  20.  
  21. interface IStoreRepository extends ICrudRepository {
  22. /**
  23.   * @return Store|null
  24.   */
  25. public function get(int $id, array $options) {}
  26.  
  27. // jak zakomentuję ten dualizm to PHPStorm nie podpowiada dobrze obiektów
  28.  
  29. class StoreRepository extends CrudRepository implements IStoreRepository
  30. {
  31. }


i teraz gdy wstrzykuję gdzieś ten interfejs to bez jakby overridu tych metod .... IDE nie podpowiada tzn.

  1. $this->storeRepository->get() // tutaj metody podpowiada ale z błędnymi modelami. enter i zły using


Przegiąłem z PHPDocsami ale czy idzie osiągnąć taki cel, że gdy skasuje te komentarze podpowie metodę i JESZCZE doda poprawny using smile.gif
nospor
Cytat
Przegiąłem z PHPDocsami
Docs to naprawde najmniejszy problem w tym co tu nam pokazales...
Tak czy siak skopiowalem sobie twoj kod i jakos wszystko dziala i ladnie podpowiada.

Moze to
$this->storeRepository
masz gdzies zle okreslone?
john_doe
Cytat
Docs to naprawde najmniejszy problem w tym co tu nam pokazales...

co masz na myśli?

  1. $this->storeRepositor

jest ok i zostało wstrzyknięte w konstruktor
nospor
Co mam na mysli? No jak zobaczylem te sieczke to pol dnia sie zastanawialem co autor mial na mysli wink.gif

Cytat
jest ok i zostało wstrzyknięte w konstruktor

Pokaz mi ten konstruktor oraz deklaracje tej klasy z kawalkiem gdzie jest storeRepository zadeklarowane w klasie
john_doe
Jeżeli to jest dla Ciebie sieczka to pozostaje mi nie dyskutować smile.gif

  1. class LocationServiceImpl implements LocationService
  2. {
  3.  
  4. protected $storeRepository;
  5.  
  6. public function __construct(IStoreRepository $storeRepository)
  7. {
  8. $this->storeRepository = $storeRepository;
  9. }
nospor
/** @var IStoreRepository */
protected $storeRepository;
Pyton_000
No i jeszcze raz co Ci tu nie działa. Przekazujesz do konstruktora Interface więc wg. niego powinno podpowiadać. A to że przekażesz jakis obiekt to tutaj IDE nie będzie wiedziało co to za obiekt jest bo masz interface.

Wg. mnie `get()` powinno "zwracać" obiekt Store wg. tego co pokazałeś.
john_doe
to nic nie daje
wtedy podpowiada metodę get ale bez modelu zupełnie tak samo jak usuwam override
nospor
Co to znaczy, ze podpowiada bez modelu?
john_doe
tzn. że zobacz

$this->repository->metoda rozwija się lista metoda z jakimi parametrami oraz \WebApp\entiity\model\store

i tego nie ma smile.gif

i use \WebApp\entity\model\store muszę klepnąć ręcznie

a to zapewnia mi to

  1. /**
  2.   * @return Store|null
  3.   */
  4. public function get(int $id, array $options) {}
nospor
Podpowiada metody z IStoreRepository. Czego oczekujesz wiecej?
john_doe
abym nie musial recznie dodawać

  1. use jakis\tam\model


w VisualStudio to normalka
w Javie i też IDE z JetBrainsa

Dziękuje Ci za dyskusje
nospor
Skoro deklarujesz, ze obiekt jest typu IStoreRepository to bedziesz mial takie podpowiadanie. Logiczne. Chcesz miec inne podpowiadania, to zadeklaruj, ze jest innego typu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.