phpstan – problém s autoloadingem

perona
Člen | 5
+
0
-

Ahoj,

na jednom větším projektu jsem si zkoušel nainstalovat phpstan – ovšem chyba autoloadingu. Fajn, chvilku jsem zkoušel googlit a zatím se nedobral řešení. Poté jsem si to vyzkoušel i na novém čistém nette sandboxu a poté přes composer nainstaloval phpstan.

Opět hláška typu:

Class App\Presenters\HomepagePresenter was not found while trying to analyse it – autoloading is probably not configured properly.

A jelikož mi to nedokáže najít třídu tak předpokládám, že nedojde ani k samotné analýze. Pokud je to problém Case konstrukce, tak to předělávat rozhodně nechci.

Tady by měl být pro jistotu i image: https://imgur.com/a/t39dBVp

Zatím děkuji za poznatky.

nightfish
Člen | 468
+
+1
-

Ahoj, PHPStan ve výchozím nastavení používá Composer autoloader, zatímco Nette používá Robotloader. Jedním z možných řešení je nastavit PHPStanu v konfiguraci adresáře, které se mají autoloadovat – viz https://github.com/phpstan/phpstan#…

perona
Člen | 5
+
0
-

Ahoj.
Ty brďo – Takových tříd je třeba 300. To se to opravdu musí manuálně nadefinovat?

CZechBoY
Člen | 3608
+
0
-

Vsak nastavis jen ten adresar, napr. app/.
Pripadne jeste muzes udelat bootstrap soubor a v nem inicializovat robotloader.

perona
Člen | 5
+
0
-

CZechBoY napsal(a):

Vsak nastavis jen ten adresar, napr. app/.
Pripadne jeste muzes udelat bootstrap soubor a v nem inicializovat robotloader.

Mohl bys mi nastínit myšlenku?

perona
Člen | 5
+
0
-

Protože jak jsem psal, tak v app máme třeba 200 – 300 tříd :-)

"autoload": { "psr-4": { "App\\": "app/" } }

Tohle by bylo čistě pro app, ale nezabralo. ;-)

perona
Člen | 5
+
0
-
parameters:
	autoload_directories:
		- %currentWorkingDirectory%

Nebo si myslel tento přístup?

CZechBoY
Člen | 3608
+
0
-

Stejně moc nechápu proč se ptáš na Nette foru na phpstan…

bootstrap se nastavuje takhle https://github.com/phpstan/phpstan#…

No vyber si jedno nebo druhý a to použij, musí fungovat oboje.
Pokud chceš použít ten composer autoloader (to už je asi 3. varianta) tak po nastavení composer.json musíš ještě spustit příkaz composer dump-autoload nebo composer update (to tit eda aktualizuje i všechny nainstalovaný knihovny, takže spíš ten dump).

David Grudl
Nette Core | 8082
+
+2
-

Je to komplet v Sandboxu

Ondřej Mirtes
Člen | 1536
+
+1
-

Poslušně hlásím, že toto už není problém, nová verze PHPStanu již třídy v autoloadingu nevyžaduje. Více na blogu: https://phpstan.org/…c-reflection

Pokud máte nějaké speciální potřeby (např. definujete globální konstanty), tak mrkněte do dokumentace sem: https://phpstan.org/…ring-symbols