annotation/larscan
最新稳定版本:v1.1.0
Composer 安装命令:
composer require annotation/larscan
包简介
Implement a Laravel scanner that can scan by namespace or path and instantiate classes annotated with specific annotations based on PHP 8.0's annotation feature.
README 文档
README
Implement a Laravel scanner that can scan by namespace or path and instantiate classes annotated with specific annotations based on PHP 8.0's annotation feature.
Installation
You can install the package via Composer:
composer require annotation/larscan
Usage
Instantiation method
use Annotation\Scannable\Attributes\Scan; use Annotation\Scannable\Attributes\ScanFile; use Annotation\Scannable\Attributes\ScanNamespace; use Annotation\Scannable\Attributes\ScanPath; use Annotation\Scannable\Attributes\ScanPackageNamespace; public function scan(): void { // ScanPackageNamespace $scan = new ScanPackageNamespace(['GuzzleHttp']); // ScanNamespace $scan = new ScanNamespace(['Illuminate\Support\Arr']); $scan = new ScanNamespace(['Illuminate\Support*']); // ScanPath $scan = new ScanPath(__DIR__.'/../Http/'); $scan = new ScanPath(new \RecursiveDirectoryIterator(__DIR__.'/../Http/Controllers')); // ScanFile $scan = new ScanFile(__FILE__); $scan = new ScanFile(new \SplFileInfo(__DIR__ . '/AppServiceProvider.php')); // Scan $scan = new Scan('Illuminate\Support\Arr'); $scan = new Scan(['Illuminate\Support\Arr']); $scan = new Scan(new \ReflectionClass('Illuminate\Support\Arr')); }
Annotation method
Only supports Laravel framework
use Annotation\Scannable\Attributes\Scan; use Annotation\Scannable\Attributes\ScanFile; use Annotation\Scannable\Attributes\ScanNamespace; use Annotation\Scannable\Attributes\ScanPath; use Annotation\Scannable\Attributes\ScanPackageNamespace; use Rfc\Scannable\Contracts\Scannable; #[ScanPackageNamespace(['GuzzleHttp'])] #[ScanNamespace(['Illuminate\Support\Arr'])] #[ScanNamespace(['Illuminate\Support*'])] #[ScanPath(__DIR__.'/../Http/')] #[ScanPath(new \RecursiveDirectoryIterator(__DIR__.'/../Http/Controllers'))] #[ScanFile(__FILE__)] #[ScanFile(new \SplFileInfo(__DIR__ . '/AppServiceProvider.php'))] #[Scan('Illuminate\Support\Arr')] #[Scan(['Illuminate\Support\Arr'])] #[Scan(new \ReflectionClass('Illuminate\Support\Arr'))] class AppServiceProvider extends ServiceProvider implements Scannable { // }
use Annotation\Scannable\Attributes\ScanNamespace; use Annotation\Scannable\Attributes\ScanPackageNamespace; use Annotation\Scannable\Contracts\Scanner; use Annotation\Scannable\Facades\Scan; public function scan(Scanner $scan): void { $namespace = $scan->using(ScanPackageNamespace::class, function (ScanPackageNamespace $scanNamespace) { return $scanNamespace->getReflectionClass(); }); //dump($namespace); $namespace = Scan::using(ScanNamespace::class, function (ScanNamespace $namespace) { return $namespace->getNamespace(); }); //dump($namespace); }
License
Nacosvel Contracts is made available under the MIT License (MIT). Please see License File for more information.
统计信息
- 总下载量: 2.06k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-01-15