pelmered/fake-car
Composer 安装命令:
composer require pelmered/fake-car
包简介
Fake-Car is a Faker provider that generates fake car data for you.
README 文档
README
Faker provider for fake car data
Installation
To install as a dev dependency run:
composer require pelmered/fake-car --dev
Remove the --dev flag if you need it in production.
Upgrade to 2.x from 1.x
Breaking changes:
- Now requires PHP 8.1+ (previously 7.3+)
- The provider name has changed from
FakecartoFakeCar. This will cause problems if you are on a case-sensitive filesystem, but it is strongly recommended to change this even if you are not. - The methods
transliterateandcheckDigiton theFakeCarprovider class are now no longer publicly available (Visibility changed to private). - The public methods
getRandomElementsFromArrayandgetWeightedon theFakeCarprovider class has been moved to a helper class. Access them like this:\Faker\Provider\FakeCarHelper::getWeighted() - The constants
EBCDICandMODELYEARare no longer public.
3, 4 and 5 are changes limited to undocumented features of the public API, and should therefore not impact the typical use cases of this package.
Basic Usage
$faker = (new \Faker\Factory())::create(); $faker->addProvider(new \Faker\Provider\FakeCar($faker)); // generate matching automobile brand and model of a car as a string echo $faker->vehicle(); // 'Volvo 740' // generate matching automobile brand and model of a 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' echo $faker->vehicleFuelType(2); // ['diesel', 'gasoline'] // 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 power without a unit echo $faker->vehicleEnginePowerValue(); // 175 // generate automobile engine torque echo $faker->vehicleEngineTorque(); // '300 nm' // generate automobile engine power without a unit echo $faker->vehicleEngineTorqueValue(); // 450 // generate automobile engine displacement echo $faker->vehicleEngineDisplacement(); // '2.0 l' // generate automobile engine displacement without unit echo $faker->vehicleEngineDisplacementValue(); // 2.0 // generate automobile engine fuel consumption echo $faker->vehicleFuelConsumption(); // '5.0 l/100km' // generate automobile engine fuel consumption without unit echo $faker->vehicleFuelConsumptionValue(); // 5.0 // generate automobile engine fuel consumption without unit echo $faker->vehicleEngineCylinders(); // 4
Laravel factory example
<?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'), ]; } }
Bring your own data
To bring you own data or override the default you can just provide your own data provider.
Option 1: Provide your own data object:
First, create the data object:
<?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, ]; }
And then add it to faker like this:
$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
Option 2: Provide your own data provider:
<?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, ]); } }
And then add the provider to 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
Check the FakeCarDataProviderTest for more examples.
pelmered/fake-car 适用场景与选型建议
pelmered/fake-car 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.34M 次下载、GitHub Stars 达 126, 最近一次更新时间为 2018 年 05 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「faker」 「vehicle」 「car」 「car-faker」 「fake-car」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 pelmered/fake-car 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 pelmered/fake-car 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 pelmered/fake-car 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A PHP library for integrating 54grad.de's vehicle labeling services.
API client for the DVLA's Vehicle Enquiry Service API
SOAP Web Service client library for interacting with the Amadeus GDS through its SOAP interface
PHP library to validate and format license plate numbers.
Symfony bundle to manage fixtures with Alice and Faker.
Vehicle logotypes set
统计信息
- 总下载量: 1.34M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 127
- 点击次数: 30
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-05-22