Skip to content

Instantly share code, notes, and snippets.

@vrana

vrana/phpstan-problems.php

Last active Feb 17, 2017
Embed
What would you like to do?
<?php
if (X) {
$a = 1;
}
// ...
if (X) {
$a;
}
while (true) {
$a = 1;
break;
}
$a;
@ondrejmirtes

This comment has been minimized.

Copy link

@ondrejmirtes ondrejmirtes commented Feb 17, 2017

Jo, tohle řeším tak, že druhý if přepíšu na isset($a). Tohle se nedá staticky analyzovat, protože výsledek podmínky se mezitím může změnit. @vrana

@vrana

This comment has been minimized.

Copy link
Owner Author

@vrana vrana commented Feb 17, 2017

Jsou to dvě různé ukázky. S oběma si třeba Closure Compiler poradí. Pokud by v první ukázce bylo dvakrát if (f()), tak na tom taky skončí, ale pokud pozná, že tam je něco neměnného, tak si s tím poradí.

Druhá ukázka je na první pohled bez problému. Ale chápu tvou motivaci brát jako scope proměnných prostě blok a když jsou použité až za ním, tak varovat. Nicméně kód podle tohohle omezení v takto jasných případech předělávat nechci.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment