grizzlyware/model-swapper

动态替换供应商模型为您的实现

v2.0.1 2024-03-04 14:34 UTC

This package is auto-updated.

Last update: 2024-09-08 13:02:36 UTC


README

Latest Version on Packagist Tests Total Downloads

此包可用于使用您自己的应用实现,该实现由供应商包提供。这可以用于在模型上操作行为、访问受保护属性或使用您自己的命名空间中的类。

扩展供应商的类已经可能,但不能更改供应商对该类的调用。所有引用仍然指向原始类名和命名空间。

此包将更改从 Eloquent 查询构建器返回的实际类,包括 all()get()first()findOrFail() 等。

例如

// Code which may exist out of your control, in a vendor's package for example
\Vendor\Package\Models\CountryCode::firstOrFail()
// \Vendor\Package\Models\CountryCode is returned

/**
* After using Model Swapper
*/

\Vendor\Package\Models\CountryCode::firstOrFail()
// \App\Models\CountryCode is returned

安装

您可以通过 composer 安装此包

composer require grizzlyware/model-swapper

使用方法

use Grizzlyware\ModelSwapper\Facades\ModelSwapper;
use Grizzlyware\ModelSwapper\Traits\IsReplacementModel;

// Add the IsReplacementModel trait to your replacement class
class YourApplicationsClass extends ClassFromVendorPackage
{
    use IsReplacementModel;
}

// Swap the model out - this would usually be in your AppServiceProvider, in the boot method.
ModelSwapper::swap(
    ClassFromVendorPackage::class,
    YourApplicationsClass::class
);

// From now on, all queries for ClassFromVendorPackage will return instances of YourApplicationsClass

高级使用

use Grizzlyware\ModelSwapper\Contracts\ModelSwapperServiceInterface;

// Or typehint from the container
public function __construct(ModelSwapperServiceInterface::class $modelSwapper)

// Or resolve from the container
resolve(ModelSwapperServiceInterface::class)->swap(
    ClassFromVendorPackage::class,
    YourApplicationsClass::class
);

// You can access the original, non-replaced model query like so:
YourApplicationsClass::replacedModelQuery()->firstOrFail();

测试

composer test

变更日志

请参阅 变更日志 了解最近更改的详细信息。

安全漏洞

请将任何安全漏洞通知 contact@grizzlyware.com,不要为它们打开问题。

致谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多详细信息。