olegkravec / unrepeatable
此包的最新版本(1.1.0)没有可用的许可证信息。
控制重复敏感功能的运行
1.1.0
2020-10-08 09:52 UTC
Requires
- php: 7.*
This package is auto-updated.
Last update: 2024-09-08 21:20:52 UTC
README
安装
composer require olegkravec/unrepeatable "^1"
- 如果需要,您可以在.gitignore中添加文件
instances.log
- 如果您有Laravel项目,可以设置环境变量
PROVIDER_STATES_FILE
,这将更改实例日志文件的名称。
简介
Unrepeatable
- 如果您需要控制/防止您的函数多次运行,则必须在您的项目中强制要求此库。例如,您有Docker,您需要为每次git push
执行php artisan db:seed
- 但在这种情况下,每个seeder都会执行... Unrepeatable是为了防止这种情况,库会检查已特化的类是否已经运行,并通知您。
使用
案例 #1 - IUnrepeatable
class GenerateDefaultUsersSeeder extends Seeder
{
use IUnrepeatable; // Just require me
public function run()
{
User::factory()->count(10)->create();
}
}
在这种情况下,GenerateDefaultUsersSeeder
将只能运行工厂一次。如果您再次运行seeder,您将在控制台看到
Seeding: Database\Seeders\GenerateDefaultUsersSeeder
Already invoked! Skipping...
Seeded: Database\Seeders\GenerateDefaultUsersSeeder (0.76ms)
案例 #2 - Unrepeatable
class GenerateDefaultUsersSeeder extends Seeder
{
use Unrepeatable; // Require me
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
if(!$this->isPreviouslyRunned()) // Check where are you need if this class was already runned
User::factory()->count(10)->create();
}
}
在这种情况下,您可以在需要的地方检查之前的运行。
您还可以指定用于检查的敏感功能的关键字,例如
public function run()
{
if(!$this->isPreviouslyRunned()) // default check
User::factory()->count(1000)->create();
if(!$this->isPreviouslyRunned("10k-clients"))
Clients::factory()->count(10000)->create();
if(!$this->isPreviouslyRunned("100k-of-another-models"))
AnotherModel::factory()->count(100000)->create();
}
在这种情况下,将在您的类中创建3个带有不同关键字的检查点。