Używam IDE PHPStorm i wpadam w kłopoty, gdy przeprowadzam inspekcję kodu.PHPStorm: poprawny PHPDoc dla kolekcji obiektów?
Mam metodę, która zwraca kolekcję obiektów. Sam Collection
jest obiektem, który ma swoje własne metody i implementuje interfejs Traversable:
class Repository
{
public function findByCustomer(Customer $user)
{
// ...
return new Collection($orders);
}
}
Gdybym dokumentowania findByUser()
zwrócić Collection
, inspekcja kodu rozumie metody na tym obiekcie, ale nie robi” t zrozumieć, co sprzeciwia kolekcja zawiera:
/**
* @return Collection
*/
public function findByCustomer() { ... }
Gdybym udokumentować findByUser()
wrócić zbiór Order
obiektów, inspekcja kodu teraz rozumie, co jest w środku zbioru, ale nie metody na Collection
samego:
/**
* @return Order[]
*/
public function findByCustomer() { ... }
Czy istnieje sposób, aby określić zarówno w tym samym czasie, coś w stylu składni Java?
/**
* @return Collection<Order>
*/
public function findByCustomer() { ... }
Można łączyć je (oba typy) razem. Może nie być idealny w niektórych sytuacjach, ale działa i możesz go uznać za lepszy niż ręczne określanie typu za pomocą @var komentarza PHPDoc. Więc ... '/ ** @return Collection | Zamów [] * /' – LazyOne
@LazyOne: nawet jeśli nie jest idealny, jest to dla mnie czystsza opcja. Czy możesz dodać to jako odpowiedź? – Benjamin