bearsunday/rector-bearsunday

Rector upgrades rules for BEAR.Sunday Framework

Installs: 197

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 1

Forks: 0

Open Issues: 1

Type:rector-extension

pkg:composer/bearsunday/rector-bearsunday

1.0.0 2025-11-10 16:19 UTC

This package is auto-updated.

Last update: 2025-11-10 16:21:59 UTC


README

Rector rules to migrate BEAR.Sunday and Ray.Di applications from annotations to PHP 8 attributes.

Requirements

  • PHP 8.2+
  • Rector 2.0+

Installation

composer require --dev bearsunday/rector-bearsunday

Usage

Run Rector using the provided configuration file:

# Preview changes
vendor/bin/rector process src tests -c vendor/bearsunday/rector-bearsunday/rector.php --dry-run

# Apply changes
vendor/bin/rector process src tests -c vendor/bearsunday/rector-bearsunday/rector.php

Rules

RayDiNamedAnnotationRector

Converts @Named annotations on methods to #[Named] attributes on constructor parameters.

Before:

class SomeClass
{
    /**
     * @Named("a=foo, b=bar")
     */
    public function __construct(int $a, int $b)
    {
    }
}

After:

class SomeClass
{
    public function __construct(
        #[Named('foo')] int $a,
        #[Named('bar')] int $b
    ) {
    }
}

AnnotationToAttributeRector

Converts BEAR.Sunday and Ray.Di annotations to PHP 8 attributes.

The provided rector.php configuration includes rules for:

Ray.Di:

  • @Inject#[Inject]
  • @Named#[Named]
  • @PostConstruct#[PostConstruct]
  • @Assisted#[Assisted]
  • @Set#[Set]
  • @Qualifier#[Qualifier]

Ray.AuraSqlModule:

  • @ReadOnlyConnection#[ReadOnlyConnection]
  • @WriteConnection#[WriteConnection]
  • @Transactional#[Transactional]

Ray.PsrCacheModule:

  • @CacheNamespace#[CacheNamespace]
  • @Local#[Local]
  • @Shared#[Shared]
  • @CacheDir#[CacheDir]

Ray.WebContextParam:

  • @CookieParam#[CookieParam]
  • @EnvParam#[EnvParam]
  • @FilesParam#[FilesParam]
  • @FormParam#[FormParam]
  • @QueryParam#[QueryParam]
  • @ServerParam#[ServerParam]

Ray.QueryModule:

  • @Query#[Query]

Ray.RoleModule:

  • @RequiresRoles#[RequiresRoles]

BEAR.Resource:

  • @AppName#[AppName]
  • @ContextScheme#[ContextScheme]
  • @Embed#[Embed]
  • @ImportAppConfig#[ImportAppConfig]
  • @Link#[Link]
  • @OptionsBody#[OptionsBody]
  • @ResourceParam#[ResourceParam]

BEAR.Package:

  • @ReturnCreatedResource#[ReturnCreatedResource]

BEAR.QueryRepository:

  • @Cacheable#[Cacheable]
  • @Purge#[Purge]
  • @Refresh#[Refresh]

See Also