pelmered / fake-car
Fake-Car 是一个 Faker 提供者,为您生成虚假的汽车数据。
2.0.1
2024-02-03 00:33 UTC
Requires
- php: ^8.1
- fakerphp/faker: ^1.10
Requires (Dev)
- brianium/paratest: ^7.1
- larapack/dd: ^1.1
- phpunit/phpunit: ^10.1
README
虚假汽车数据的 Faker 提供者
安装
要作为开发依赖项安装,请运行
composer require pelmered/fake-car --dev
如果您需要在生产中使用,请移除 --dev 标志。
从 1.x 升级到 2.x
破坏性更改
- 现在需要 PHP 8.1+(之前为 7.3+)
- 提供者名称已从
Fakecar更改为FakeCar。如果您在大小写敏感的文件系统中,这将导致问题,但强烈建议即使不在大小写敏感的文件系统中也进行更改。 FakeCar提供者类上的transliterate和checkDigit方法现在不再公开(可见性更改为私有)。FakeCar提供者类上的公共方法getRandomElementsFromArray和getWeighted已移动到辅助类。可以通过以下方式访问它们:\Faker\Provider\FakeCarHelper::getWeighted- 常量
EBCDIC和MODELYEAR已不再公开。
3、4 和 5 是对公共 API 的未记录功能的更改,因此不应影响此包的典型使用场景。
基本用法
$faker = (new \Faker\Factory())::create(); $faker->addProvider(new \Faker\Provider\FakeCar($faker)); // generate matching automobile brand and model of car as a string echo $faker->vehicle; // Volvo 740 // generate matching automobile brand and model of car as an array echo $faker->vehicleArray; // [ 'brand' => 'Hummer', 'model' => 'H1' ] // generate only automobile brand echo $faker->vehicleBrand; // Ford // generate automobile manufacturer and model of car echo $faker->vehicleModel; // 488 Spider // generate Vehicle Identification Number(VIN) - https://en.wikipedia.org/wiki/Vehicle_identification_number echo $faker->vin; // d0vcddxpXAcz1utgz // generate automobile registration number echo $faker->vehicleRegistration; // ABC-123 // generate automobile registration number with custom format echo $faker->vehicleRegistration('[A-Z]{2}-[0-9]{5}'); // AB-12345 // generate automobile model type echo $faker->vehicleType; // hatchback // generate automobile fuel type echo $faker->vehicleFuelType; // diesel // generate automobile door count echo $faker->vehicleDoorCount; // 4 // generate automobile seat count echo $faker->vehicleSeatCount; // 5 // generate automobile properties echo $faker->vehicleProperties; // ['Towbar','Aircondition','GPS', 'Leather seats'] // generate automobile gear type (manual or automatic) echo $faker->vehicleGearBoxType; // manual // generate automobile engine power echo $faker->vehicleEnginePower; // 250 hp // generate automobile engine torque echo $faker->vehicleEngineTorque; // 300 nm
Laravel 工厂示例
<?php namespace Database\Factories; use App\Models\Vehicle; use Faker\Provider\FakeCar; use Illuminate\Database\Eloquent\Factories\Factory; class VehicleFactory extends Factory { /** * The name of the factory's corresponding model. * * @var string */ protected $model = Vehicle::class; /** * Define the model's default state. * * @return array */ public function definition() { $this->faker->addProvider(new FakeCar($this->faker)); $vehicle = $this->faker->vehicleArray(); return [ 'vehicle_type' => 'car', 'vin' => $this->faker->vin, 'registration_no' => $this->faker->vehicleRegistration, 'chassis_type' => str_replace(' ', '_', $this->faker->vehicleType), 'fuel' => $this->faker->vehicleFuelType, 'brand' => $vehicle['brand'], 'model' => $vehicle['model'], 'year' => $this->faker->biasedNumberBetween(1990, date('Y'), 'sqrt'), ]; } }
提供自己的数据
要提供自己的数据或覆盖默认值,只需提供自己的数据提供者。
选项 1:提供自己的数据对象
首先,创建数据对象
<?php class BMWFakeCarData extends \Faker\Provider\FakeCarData { public static $brandsWithModels = [ 'BMW' => [ '8 Series', 'M1', 'X5', 'Z1', 'Z3', 'Z4', 'Z8', 'Alpina', 'E', 'X3', 'M', 'X6', '1 Series', '5 Series', 'X5 M', 'M5', '750', '6 Series', '3 Series', 'M3', 'X6 M', 'M6', 'X1', '7 Series', '325', '324', '316', '320', '318', '328', '523', '740', '520', '728', '525', 'Isetta', '530', '528', '545', '535', 'Dixi', '730', '745', '518', '524', '540', '116', '118', '120', '123', '125', '130', '135', '323', '330', '335', '550', '628', '630', '633', '635', '645', '650', '640', '760', '735', '732', '725', 'X series', 'X8', '340', 'RR', '1 Series М', '321', '315', '6 Series Gran Coupe', 'X2', '4 Series', '428', '435', '420', '2 Series', '3 Series GT', 'X4', '4 Series Gran Coupe', '326', 'I8', '5 Series GT', 'I3', 'M2', 'M4', 'Neue Klasse', '1602', 'Active Hybrid 7', '2002', '2000', 'F10', 'X7', '128', '6 Series GT' ], ]; public static $vehicleTypes = [ 'hatchback', 'sedan', 'convertible', 'SUV', 'coupe', ]; public static $vehicleFuelTypes = [ 'gasoline' => 40, 'electric' => 10, 'diesel' => 20, ]; }
然后按如下方式将其添加到 Faker 中
$fakeCarDataProvider = new \Faker\Provider\FakeCarDataProvider(new BMWFakeCarData); $faker = (new \Faker\Factory())::create(); $fakeCar = new \Faker\Provider\FakeCar($faker); $fakeCar->setDataProvider($fakeCarDataProvider); $faker->addProvider($fakeCar); echo $faker->vehicleBrand; // BMW
选项 2:提供自己的数据提供者
<?php namespace FakeCar\Tests\TestProviders; use Faker\Provider\FakeCarDataProviderInterface; use Faker\Provider\FakeCarHelper; class FerrariEnzoTestProvider implements FakeCarDataProviderInterface { public function getVehicleBrand(): string { return 'Ferrari'; } public function getVehicleModel(): string { return 'Enzo'; } public function getBrandsWithModels(): array { return [ 'brand' => $this->getVehicleBrand(), 'model' => $this->getVehicleModel(), ]; } public function getVehicleType(): string { return 'coupe'; } public function getVehicleFuelType(): string|array { return 'gasoline'; } public function getVehicleDoorCount(): int { return 2; } public function getVehicleSeatCount(): int { return 2; } public function getVehicleProperties(int $count = 0): array { return [ 'Air condition', 'GPS', 'Leather seats', ]; } public function getVehicleGearBoxType(): string { return FakeCarHelper::getWeighted([ 'manual' => 70, 'automatic' => 30, ]); } }
然后将其添加到 Faker 中
$fakeCarDataProvider = new FerrariEnzoTestProvider(); $faker = (new \Faker\Factory())::create(); $fakeCar = new \Faker\Provider\FakeCar($faker); $fakeCar->setDataProvider($fakeCarDataProvider); $faker->addProvider($fakeCar); echo $faker->vehicleBrand; // Ferrari echo $faker->vehicleModel; // Enzo
有关更多示例,请参阅 FakeCarDataProviderTest。