vicgutt / laravel-models-finder
在您的 Laravel 应用或包中查找所有模型
v0.1.1
2023-03-16 18:10 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.9.2
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
README
此包允许您在指定的文件夹中查找和检索所有 Laravel 模型。一个“模型”是指任何继承自 Illuminate\Database\Eloquent\Model 的类。
以下是一个快速示例
// On an app containing only the default Laravel "User" model, running: $models = ModelsFinder::find() ->map(static fn (ModelData $model): array => [ 'path' => $model->path, 'class' => $model->class, ]) ->toArray(); // would return the following: [ [ 'path' => '/[...]/my-project/app/Models/User.php', 'class' => '\App\Models\User', ], ]
安装
您可以通过 composer 安装此包
composer require vicgutt/laravel-models-finder
使用方法
您可以通过使用 find 静态方法来启动模型的发现。
$models = ModelsFinder::find( directory: app_path('Models'), basePath: base_path(), baseNamespace: '', );
此方法接受 3 个可选参数
directory: 要递归搜索模型的目录。默认为app_path('Models')。basePath: 搜索启动的项目自动加载的入口目录。默认为base_path()。baseNamespace: 搜索启动的项目自动加载的基本命名空间。默认为''。
basePath 和 baseNamespace 属性很可能对应于 composer.json 文件中的一个自动加载条目。示例
{ "autoload": { "psr-4": { // Base namespace | Base path "Spatie\\MediaLibrary\\": "src" } } }
以下是一个示例,展示如何在 vendor 文件夹中搜索模型
ModelsFinder::find( directory: base_path('vendor/spatie/laravel-medialibrary'), basePath: base_path('vendor/spatie/laravel-medialibrary/src'), baseNamespace: 'Spatie\MediaLibrary' )->toArray(), // would return the following: [ [ 'path' => '[...]/vendor/spatie/laravel-medialibrary/src/MediaCollections/Models/Media.php', 'class' => 'Spatie\MediaLibrary\MediaCollections\Models\Media', ], ]
此方法返回的是一个延迟加载的集合(Illuminate\Support\LazyCollection)。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
贡献
如果您想为此项目做出贡献,请在提交拉取请求之前阅读我们的贡献文档。
安全漏洞
请查看我们如何报告安全漏洞的安全策略。
鸣谢
许可协议
MIT 许可协议(MIT)。有关更多信息,请参阅许可文件。