Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion compiler/src/Composer/ComposerJsonManipulator.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

declare(strict_types=1);

namespace Rector\Compiler\Console;
namespace Rector\Compiler\Composer;

use Nette\Utils\FileSystem as NetteFileSystem;
use Nette\Utils\Json;
Expand Down
3 changes: 1 addition & 2 deletions compiler/src/Console/CompileCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

namespace Rector\Compiler\Console;

use Rector\Compiler\Composer\ComposerJsonManipulator;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\Process\Process;
use Symplify\PackageBuilder\Console\ShellCode;
use Symplify\PackageBuilder\Console\Style\SymfonyStyleFactory;
Expand Down Expand Up @@ -42,7 +42,6 @@ public function __construct(string $dataDir, string $buildDir, ComposerJsonManip
{
parent::__construct();

$this->filesystem = new Filesystem();
$this->composerJsonManipulator = $composerJsonManipulator;

$this->dataDir = $dataDir;
Expand Down
7 changes: 4 additions & 3 deletions config/set/architecture/doctrine-repository-as-service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ parameters:

services:
# order matters, this needs to be first to correctly detect parent repository
Rector\Core\Rector\Architecture\RepositoryAsService\ReplaceParentRepositoryCallsByRepositoryPropertyRector: null
Rector\Core\Rector\Architecture\RepositoryAsService\MoveRepositoryFromParentToConstructorRector: null
Rector\Core\Rector\Architecture\RepositoryAsService\ServiceLocatorToDIRector: null
Rector\Architecture\Rector\Class_\MoveRepositoryFromParentToConstructorRector: null
Rector\Architecture\Rector\MethodCall\ServiceLocatorToDIRector: null
Rector\Architecture\Rector\MethodCall\ReplaceParentRepositoryCallsByRepositoryPropertyRector: null

Rector\Doctrine\Rector\Class_\RemoveRepositoryFromEntityAnnotationRector: null
162 changes: 81 additions & 81 deletions docs/AllRectorsOverview.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,87 @@

<br>

### `MoveRepositoryFromParentToConstructorRector`

- class: `Rector\Architecture\Rector\Class_\MoveRepositoryFromParentToConstructorRector`

Turns parent EntityRepository class to constructor dependency

```diff
namespace App\Repository;

+use App\Entity\Post;
use Doctrine\ORM\EntityRepository;

-final class PostRepository extends EntityRepository
+final class PostRepository
{
+ /**
+ * @var \Doctrine\ORM\EntityRepository
+ */
+ private $repository;
+ public function __construct(\Doctrine\ORM\EntityManager $entityManager)
+ {
+ $this->repository = $entityManager->getRepository(\App\Entity\Post::class);
+ }
}
```

<br>

### `ReplaceParentRepositoryCallsByRepositoryPropertyRector`

- class: `Rector\Architecture\Rector\MethodCall\ReplaceParentRepositoryCallsByRepositoryPropertyRector`

Handles method calls in child of Doctrine EntityRepository and moves them to "$this->repository" property.

```diff
<?php

use Doctrine\ORM\EntityRepository;

class SomeRepository extends EntityRepository
{
public function someMethod()
{
- return $this->findAll();
+ return $this->repository->findAll();
}
}
```

<br>

### `ServiceLocatorToDIRector`

- class: `Rector\Architecture\Rector\MethodCall\ServiceLocatorToDIRector`

Turns "$this->getRepository()" in Symfony Controller to constructor injection and private property access.

```diff
class ProductController extends Controller
{
+ /**
+ * @var ProductRepository
+ */
+ private $productRepository;
+
+ public function __construct(ProductRepository $productRepository)
+ {
+ $this->productRepository = $productRepository;
+ }
+
public function someAction()
{
$entityManager = $this->getDoctrine()->getManager();
- $entityManager->getRepository('SomethingBundle:Product')->findSomething(...);
+ $this->productRepository->findSomething(...);
}
}
```

<br>

## Autodiscovery

### `MoveEntitiesToEntityDirectoryRector`
Expand Down Expand Up @@ -9407,34 +9488,6 @@ services:

<br>

### `MoveRepositoryFromParentToConstructorRector`

- class: `Rector\Core\Rector\Architecture\RepositoryAsService\MoveRepositoryFromParentToConstructorRector`

Turns parent EntityRepository class to constructor dependency

```diff
namespace App\Repository;

+use App\Entity\Post;
use Doctrine\ORM\EntityRepository;

-final class PostRepository extends EntityRepository
+final class PostRepository
{
+ /**
+ * @var \Doctrine\ORM\EntityRepository
+ */
+ private $repository;
+ public function __construct(\Doctrine\ORM\EntityManager $entityManager)
+ {
+ $this->repository = $entityManager->getRepository(\App\Entity\Post::class);
+ }
}
```

<br>

### `MultipleClassFileToPsr4ClassesRector`

- class: `Rector\Core\Rector\Psr4\MultipleClassFileToPsr4ClassesRector`
Expand Down Expand Up @@ -9760,29 +9813,6 @@ services:

<br>

### `ReplaceParentRepositoryCallsByRepositoryPropertyRector`

- class: `Rector\Core\Rector\Architecture\RepositoryAsService\ReplaceParentRepositoryCallsByRepositoryPropertyRector`

Handles method calls in child of Doctrine EntityRepository and moves them to "$this->repository" property.

```diff
<?php

use Doctrine\ORM\EntityRepository;

class SomeRepository extends EntityRepository
{
public function someMethod()
{
- return $this->findAll();
+ return $this->repository->findAll();
}
}
```

<br>

### `ReplaceVariableByPropertyFetchRector`

- class: `Rector\Core\Rector\Architecture\DependencyInjection\ReplaceVariableByPropertyFetchRector`
Expand Down Expand Up @@ -9906,36 +9936,6 @@ services:

<br>

### `ServiceLocatorToDIRector`

- class: `Rector\Core\Rector\Architecture\RepositoryAsService\ServiceLocatorToDIRector`

Turns "$this->getRepository()" in Symfony Controller to constructor injection and private property access.

```diff
class ProductController extends Controller
{
+ /**
+ * @var ProductRepository
+ */
+ private $productRepository;
+
+ public function __construct(ProductRepository $productRepository)
+ {
+ $this->productRepository = $productRepository;
+ }
+
public function someAction()
{
$entityManager = $this->getDoctrine()->getManager();
- $entityManager->getRepository('SomethingBundle:Product')->findSomething(...);
+ $this->productRepository->findSomething(...);
}
}
```

<br>

### `StaticCallToFunctionRector`

- class: `Rector\Core\Rector\StaticCall\StaticCallToFunctionRector`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

declare(strict_types=1);

namespace Rector\Core\Rector\Architecture\RepositoryAsService;
namespace Rector\Architecture\Rector\Class_;

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityRepository;
Expand All @@ -20,6 +20,9 @@
use Rector\Doctrine\Contract\Mapper\DoctrineEntityAndRepositoryMapperInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;

/**
* @see \Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\DoctrineRepositoryAsServiceTest
*/
final class MoveRepositoryFromParentToConstructorRector extends AbstractRector
{
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

declare(strict_types=1);

namespace Rector\Core\Rector\Architecture\RepositoryAsService;
namespace Rector\Architecture\Rector\MethodCall;

use Doctrine\ORM\EntityRepository;
use PhpParser\Node;
Expand All @@ -12,6 +12,9 @@
use Rector\Core\RectorDefinition\CodeSample;
use Rector\Core\RectorDefinition\RectorDefinition;

/**
* @see \Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\DoctrineRepositoryAsServiceTest
*/
final class ReplaceParentRepositoryCallsByRepositoryPropertyRector extends AbstractRector
{
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

declare(strict_types=1);

namespace Rector\Core\Rector\Architecture\RepositoryAsService;
namespace Rector\Architecture\Rector\MethodCall;

use Nette\Utils\Strings;
use PhpParser\Node;
Expand All @@ -21,6 +21,9 @@
use Rector\Doctrine\Contract\Mapper\DoctrineEntityAndRepositoryMapperInterface;
use Rector\NodeTypeResolver\Node\AttributeKey;

/**
* @see \Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\DoctrineRepositoryAsServiceTest
*/
final class ServiceLocatorToDIRector extends AbstractRector
{
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

declare(strict_types=1);

namespace Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService;
namespace Rector\Architecture\Tests\Rector\DoctrineRepositoryAsService;

use Iterator;
use Rector\Core\Testing\PHPUnit\AbstractRectorTestCase;

/**
* @covers \Rector\Rector\Architecture\RepositoryAsService\ReplaceParentRepositoryCallsByRepositoryPropertyRector
* @covers \Rector\Rector\Architecture\RepositoryAsService\MoveRepositoryFromParentToConstructorRector
* @covers \Rector\Rector\Architecture\RepositoryAsService\ServiceLocatorToDIRector
* @covers \Rector\Architecture\Rector\MethodCall\ReplaceParentRepositoryCallsByRepositoryPropertyRector
* @covers \Rector\Architecture\Rector\Class_\MoveRepositoryFromParentToConstructorRector
* @covers \Rector\Architecture\Rector\MethodCall\ServiceLocatorToDIRector
*/
final class DoctrineRepositoryAsServiceTest extends AbstractRectorTestCase
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?php

namespace Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\Fixture;
namespace Rector\Architecture\Tests\Rector\DoctrineRepositoryAsService\Fixture;

use Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\Source\Entity\Post;
use Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\Source\SymfonyController;
Expand All @@ -21,7 +21,7 @@ public function anythingAction(int $id): Response
-----
<?php

namespace Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\Fixture;
namespace Rector\Architecture\Tests\Rector\DoctrineRepositoryAsService\Fixture;

use Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\Source\Entity\Post;
use Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\Source\SymfonyController;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ parameters:
entity_manager_class: 'Rector\Core\Tests\Rector\Architecture\DoctrineRepositoryAsService\Source\EntityManagerClass'

imports:
- { resource: '../../../../config/set/architecture/doctrine-repository-as-service.yaml' }
- { resource: '../../../../../config/set/architecture/doctrine-repository-as-service.yaml' }