Hromadné doplnění typů – typehint

kolibla
Člen | 25
+
0
-

Ahoj, přátelé,

možná jsem nepochopila správně funkci Generátoru PHP kódu (https://doc.nette.org/…hp-generator), ale potřebovala bych automaticky doplnit všechny například návratové hodnoty (typy) k metodám. Následující příklad si snad dokáži napsat do kódu rychleji, nechápu smysl, protože tohle je například pro 500 metod nemožné:

$method = $class->addMethod('count')
	->addComment('Count it.')
	->addComment('@return int')
	->setFinal()
	->setProtected()
	->setReturnType('int') // návratové typy u metod
	->setReturnNullable() // nullable typy
	->setBody('return count($items ?: $this->items);');

Můj usecase je prosím takový, že bych si potřebovala například určit adresář app a provést regenerate kódu. V podstatě nějaké komplexní (hromadné) doplnění typehintů. Pokud to nejde přes tento nástroj hromadně, jaké jsou možnosti – ideálně něco, co to rovnou opraví v souborech?

Děkuji a nezlobte se, možná se jen blbě ptám. :)

kolibla
Člen | 25
+
0
-

Něco takového by snad měl umět PhpStan – fixovat ne? :) Co jsem tak koukala, tak za 7 doláčů.

Editoval kolibla (21. 1. 2021 1:11)

dakur
Člen | 493
+
0
-

@kolibla Ahoj, přesně na hromadný upgrade kódu vznikl nástroj rector. Mně se s ním ale třeba pracuje špatně – přijde mi, že nemá docs napsané pro lidi, kteří mu nerozumnějí. Ale můžeš to zkusit.

Jinak nette/php-generator je pro generování kódu, ne úpravu. I když se k tomu samozřejmě použít dá, my např. v našem scaffolderu přenášíme vybrané existující metody do nové třídy (link). Snad by to šlo nějak podobně udělat i pro tvůj use-case.

A ano, phpstan taky vypadá, že by to měl umět. 🙂

kolibla
Člen | 25
+
0
-

Rector od T.V. je strašně komplexní, když si ho chce člověk nainstalovat přes composer, tak společně musí nainstalovat dalších milion závislostí pro symfony, což je pro nás nežádoucí.

PhpStan je super, troufnu si říct, že jeden z TOP na trhu.