Find the best Rector rule to solve your problem
Add type to constants based on their value
final class SomeClass
{
- public const TYPE = 'some_type';
+ public const string TYPE = 'some_type';
}
Add type to property by added rules, mostly public/property by parent type
class SomeClass extends ParentClass
{
- public $name;
+ public string $name;
}
Applies type hints to closures on Iterable method calls where key/value types are documented
class SomeClass
{
/**
* @param Collection<int, string> $collection
*/
public function run(Collection $collection)
{
- return $collection->map(function ($item, $key) {
+ return $collection->map(function (string $item, int $key) {
return $item . $key;
});
}
}
Add closure param type based on the object of the method call
$request = new Request();
-$request->when(true, function ($request) {});
+$request->when(true, function (Request $request) {});
Add return type declarations from yields
class SomeClass
{
- public function provide()
+ /**
+ * @return Iterator<int>
+ */
+ public function provide(): Iterator
{
yield 1;
}
}
Add exact fixed array type in known cases
+use PhpCsFixer\Tokenizer\Token;
use PhpCsFixer\Tokenizer\Tokens;
class SomeClass
{
+ /**
+ * @param Tokens<Token>
+ */
public function run(Tokens $tokens)
{
}
}
Add param types where needed
-(new SomeClass)->process(function ($parameter) {});
+(new SomeClass)->process(function (string $parameter) {});
Add closure param type based on known passed service/string types of method calls
$app = new Container();
-$app->extend(SomeClass::class, function ($parameter) {});
+$app->extend(SomeClass::class, function (SomeClass $parameter) {});
Add closure return type void if there is no return
-function () {
+function (): void {
};
Add "never" return-type for closure that never return anything
-function () {
+function (): never {
throw new InvalidException();
}