diff --git a/composer.json b/composer.json index 8dce7d7..b56e361 100644 --- a/composer.json +++ b/composer.json @@ -73,7 +73,7 @@ "stan": "@phpstan", "stan-baseline": "tools/phpstan --generate-baseline", "stan-setup": "phive install", - "rector-setup": "cp composer.json composer.backup && composer require --dev rector/rector:\"~2.3.1\" && mv composer.backup composer.json", + "rector-setup": "cp composer.json composer.backup && composer require --dev rector/rector:\"~2.7.0\" && mv composer.backup composer.json", "rector-check": "vendor/bin/rector process --dry-run", "rector-fix": "vendor/bin/rector process", "test": "phpunit", diff --git a/rector.php b/rector.php index 3290f03..8db2407 100644 --- a/rector.php +++ b/rector.php @@ -3,13 +3,16 @@ use Rector\Caching\ValueObject\Storage\FileCacheStorage; use Rector\CodeQuality\Rector\FuncCall\CompactToVariablesRector; -use Rector\CodeQuality\Rector\If_\ExplicitBoolCompareRector; +use Rector\CodeQuality\Rector\If_\ArrayExplicitBoolCompareRector; +use Rector\CodeQuality\Rector\If_\ObjectExplicitBoolCompareRector; use Rector\CodingStyle\Rector\Assign\SplitDoubleAssignRector; use Rector\CodingStyle\Rector\Catch_\CatchExceptionNameMatchingTypeRector; use Rector\CodingStyle\Rector\ClassMethod\MakeInheritedMethodVisibilitySameAsParentRector; use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector; use Rector\Config\RectorConfig; +use Rector\DeadCode\Rector\ClassMethod\RemoveMixedDocblockOverruledByNativeTypeRector; use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector; +use Rector\DeadCode\Rector\ClassMethod\RemoveUselessUnionReturnDocblockRector; use Rector\Php74\Rector\Closure\ClosureToArrowFunctionRector; use Rector\Php80\Rector\Class_\ClassPropertyAssignToConstructorPromotionRector; use Rector\Set\ValueObject\SetList; @@ -51,8 +54,11 @@ ReturnTypeFromStrictFluentReturnRector::class, SplitDoubleAssignRector::class, NewlineAfterStatementRector::class, - ExplicitBoolCompareRector::class, TypedPropertyFromCreateMockAssignRector::class, + ArrayExplicitBoolCompareRector::class, + ObjectExplicitBoolCompareRector::class, + RemoveUselessUnionReturnDocblockRector::class, + RemoveMixedDocblockOverruledByNativeTypeRector::class, // Parent SimpleBakeCommand::buildOptionParser() switched from public // to protected in cakephp/bake 3.6.4. Narrowing this override would diff --git a/src/Controller/Component/AuthorizationComponent.php b/src/Controller/Component/AuthorizationComponent.php index c87a5e8..cc11eff 100644 --- a/src/Controller/Component/AuthorizationComponent.php +++ b/src/Controller/Component/AuthorizationComponent.php @@ -126,9 +126,7 @@ protected function performCheck( string $method = 'can', ): ResultInterface|bool { $request = $this->getController()->getRequest(); - if ($action === null) { - $action = $this->getDefaultAction($request); - } + $action ??= $this->getDefaultAction($request); $identity = $this->getIdentity($request); if (!$identity instanceof IdentityInterface) { @@ -152,9 +150,7 @@ protected function performCheck( public function applyScope(mixed $resource, ?string $action = null, mixed ...$optionalArgs): mixed { $request = $this->getController()->getRequest(); - if ($action === null) { - $action = $this->getDefaultAction($request); - } + $action ??= $this->getDefaultAction($request); $identity = $this->getIdentity($request); if (!$identity instanceof IdentityInterface) { return $this->getService($request)->applyScope(null, $action, $resource); diff --git a/src/Middleware/AuthorizationMiddleware.php b/src/Middleware/AuthorizationMiddleware.php index 324474f..cdfafd3 100644 --- a/src/Middleware/AuthorizationMiddleware.php +++ b/src/Middleware/AuthorizationMiddleware.php @@ -90,11 +90,9 @@ public function __construct( array $config = [], ?ContainerInterface $container = null, ) { - if ($this->_defaultConfig['identityDecorator'] === null) { - $this->_defaultConfig['identityDecorator'] = interface_exists(AuthenIdentityInterface::class) - ? Identity::class - : IdentityDecorator::class; - } + $this->_defaultConfig['identityDecorator'] ??= interface_exists(AuthenIdentityInterface::class) + ? Identity::class + : IdentityDecorator::class; $this->subject = $subject; $this->container = $container; diff --git a/src/Policy/OrmResolver.php b/src/Policy/OrmResolver.php index a078802..05013c1 100644 --- a/src/Policy/OrmResolver.php +++ b/src/Policy/OrmResolver.php @@ -157,9 +157,7 @@ protected function findPolicy(string $class, string $name, string $namespace): m } // Check the application/plugin. - if ($policyClass === null) { - $policyClass = App::className($namespace . '.' . $name, 'Policy', 'Policy'); - } + $policyClass ??= App::className($namespace . '.' . $name, 'Policy', 'Policy'); if ($policyClass === null) { throw new MissingPolicyException([$class]); diff --git a/tests/test_app/TestApp/Policy/ArticlePolicy.php b/tests/test_app/TestApp/Policy/ArticlePolicy.php index 7211c07..e0dcc43 100644 --- a/tests/test_app/TestApp/Policy/ArticlePolicy.php +++ b/tests/test_app/TestApp/Policy/ArticlePolicy.php @@ -37,7 +37,7 @@ public function canAdd($user): bool * @param \Authorization\IdentityInterface $user * @return bool */ - public function canEdit($user, Article $article) + public function canEdit($user, Article $article): bool { if ($user === null) { return false; @@ -56,7 +56,7 @@ public function canEdit($user, Article $article) * @param \Authorization\IdentityInterface $user * @return bool */ - public function canModify($user, Article $article) + public function canModify($user, Article $article): bool { if (in_array($user['role'], ['admin', 'author'])) { return true; @@ -71,7 +71,7 @@ public function canModify($user, Article $article) * @param \Authorization\IdentityInterface $user * @return bool */ - public function canDelete($user, Article $article) + public function canDelete($user, Article $article): bool { if ($user['role'] === 'admin') { return true; @@ -84,7 +84,6 @@ public function canDelete($user, Article $article) * Scope method for index * * @param \Authorization\IdentityInterface $user - * @return bool */ public function scopeIndex($user, Article $article): Article {