grizzlyware / model-swapper
动态替换供应商模型为您的实现
v2.0.1
2024-03-04 14:34 UTC
Requires
- php: ^8.1
- laravel/framework: ^10
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.13
- orchestra/testbench: ^8
- phpunit/phpunit: ^10
This package is auto-updated.
Last update: 2024-09-08 13:02:36 UTC
README
此包可用于使用您自己的应用实现,该实现由供应商包提供。这可以用于在模型上操作行为、访问受保护属性或使用您自己的命名空间中的类。
扩展供应商的类已经可能,但不能更改供应商对该类的调用。所有引用仍然指向原始类名和命名空间。
此包将更改从 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)。请参阅 许可证文件 了解更多详细信息。