laragear/meta

Laravel 包的 Laravel 包助手

v3.1.0 2024-07-23 00:24 UTC

README

Latest Version on Packagist Latest stable test run Codecov coverage Maintainability Sonarcloud Status Laravel Octane Compatibility

为 Laravel 包提供 Laravel 包助手。

public function boot()
{
    $this->withPublishableMigrations(__DIR__.'/../migrations');
    
    $this->withSchedule(fn($schedule) => $schedule->command('inspire')->hourly());
}

成为赞助商

您的支持使我能够保持此包免费、更新和可维护。或者,您也可以 传播这个词!

要求

  • Laravel 10 或更高版本。

安装

使用 Composer 将此包引入到您的项目中,包括仅用于开发的测试器

composer require laragear/meta
composer require --dev laragear/meta-testing

探索者

Discover 类是一个构建器,允许在给定路径下发现类。它包含各种流畅的方法来过滤要发现的类,如方法、属性、接口和特性等。

它已移至 自己的存储库。您可以与此包一起安装它,但不是必须的。

composer require laragear/discover

中间件声明

当使用 withMiddleware() 时,您将收到一个 MiddlewareDeclaration 对象,该对象具有方便的方法来全局或组内注册中间件,将其设置为全局优先级堆栈中的第一个/最后一个,并为其注册别名。

public function boot()
{
    $declaration = $this->withMiddleware(OnlyAdults::class);
    
    // Make it a shared instance.
    $declaration->shared();
    
    // Set an alias
    $declaration->as('adults');
    
    // Puts it inside a middleware group.
    $declaration->inGroup('web');
    
    // Sets the middleware in the global stack.
    $declaration->globally();
    
    // Makes the middleware run first or last in the priority stack.
    $declaration->first();
    $declaration->last();
}

构建器扩展器

ExtendsBuilder 特性允许 全局作用域 通过新方法扩展 Eloquent Builder 的实例。简单地开始您的构建器方法 extend,无论可见性范围如何,方法是否为静态。

use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Laragear\Meta\Database\Eloquent\ExtendsBuilder;

class Cars implements Scope
{
    use ExtendsBuilder;
    
    public function apply(Builder $builder, Model $model)
    {
        // ...
    }
    
    private function extendWhereAvailable($builder)
    {
        return $builder->where('available_at', '>', now());
    }
    
    protected static function extendWhereColor($builder, string $color)
    {
        return $builder->where('base_color', $color);
    }
}

提示

如果您需要查询的模型,您始终可以使用 getModel() 在 Eloquent Builder 实例上。

命令助手

此元包包括 WithEnvironmentFile 助手特性,用于修改环境文件键和值。

use Illuminate\Console\Command;
use Laragear\Meta\Console\Commands\WithEnvironmentFile;

class AddServiceKey extends Command
{
    use WithEnvironmentFile;
    
    public function handle()
    {
        // ...
        
        $this->putEnvKey('AWESOME_SERVICE', $this->argument('service_key'))
    }
}

升级

测试

Laragear Meta 的先前版本包含包的测试助手。这些已被迁移到 Laragear MetaTesting。您可以使用这些助手在您的项目中,通过 Composer 安装作为开发依赖项

composer require --dev laragear/meta-testing

PublishesMigrations 特性

此特性已被删除。

publishesMigrations 方法与 Laravel 11.x 的签名冲突。如果您计划将其导入多版本 Laravel 包,请考虑使用您自己的发布逻辑。

您应该使用 withPublishableMigrations() 方法与包含您的迁移的目录。此方法如果可用,则使用 publishesMigrations(),否则将回退到在每个路径中的单个迁移文件上发布。

public function boot()
{
    // ...
    
    $this->withPublishableMigrations(__DIR__.'/../stubs/migrations');
}

Laravel Octane 兼容性

  • 没有使用过时的应用程序实例的单例。
  • 没有使用过时的配置实例的单例。
  • 没有使用过时的请求实例的单例。
  • ExtendsBuilder 仅在每个作用域中初始化其静态属性一次。

使用此包与 Laravel Octane 应该没有问题。

安全

如果您发现任何安全相关的问题,请通过电子邮件 darkghosthunter@gmail.com 联系,而不是使用问题跟踪器。

许可证

本特定软件包版本在发布时遵循MIT 许可协议

LaravelTaylor Otwell的商标。版权所有 © 2011-2024 Laravel LLC。