Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Faker Laravel Package

fakerphp/faker

Faker is a PHP library for generating realistic fake data to seed databases, build test fixtures, stress test apps, create sample documents, or anonymize production data. Create a generator with Faker\Factory::create() and call methods like name(), email(), text().

View on GitHub
Deep Wiki
Context7

Getting Started

  1. Install: Run composer require fakerphp/faker — no additional setup required.
  2. Basic Usage: Instantiate via Faker\Factory::create() (optionally with locale, e.g. create('fr_FR')) and call methods like $faker->name(), $faker->email(), $faker->text() — each invocation yields new random values.
  3. First Use Case: Generate test fixtures for database seeding (e.g., in Laravel’s DatabaseSeeder) or unit test fixtures (e.g., populating Eloquent models with Factory classes).

Implementation Patterns

  • Custom Providers: Extend Faker\Provider\Base and register with $faker->addProvider(new MyCustomProvider($faker)). Use method names that map to real data types (e.g., vatNumber(), companyId()).
  • Locale Awareness: Use localized providers for region-specific data (e.g., fr_FR for French addresses, ja_JP for Japanese names). Check Faker\Provider\{Locale}\{Provider} classes for available formats.
  • Declarative Generation: Use unique() to ensure no duplicates in a session: $faker->unique()->email(), or regexify() to generate structured values like 'ORD-' . $faker->regexify('[A-Z]{3}\d{5}').
  • Integration with Laravel: In model factories (e.g., UserFactory), use $this->faker directly — Faker is pre-instantiated and injected by Laravel’s test framework.
  • Type Safety: All methods are fully typed (PSR-7/17 style), and modern IDEs offer autocomplete via @method annotations on Generator.

Gotchas and Tips

  • Property Access Deprecated: Direct property access (e.g., $faker->name, $faker->city) throws deprecation warnings in v2+ — always use method calls ($faker->name()).
  • randomElements() Behavior Change: In v1.20+, calling randomElements() without a count argument returns 1–3 elements randomly, not all elements — specify count explicitly if needed.
  • Locale Gotcha: Factory::create() defaults to en_US; missing locale-specific data may fall back to base provider (e.g., address() might be generic even for other locales). Verify with $faker->locale.
  • Extensibility: Use the extension system (PSR-11 container-aware) for advanced DI. For Laravel, prefer Faker\Generator directly unless building reusable packages.
  • Replayer for Tests: Use Faker\Generator::setReplay() to fix data for repeatable tests (though seed() is simpler for most unit tests: $faker->seed(1234)).
  • Refactoring Path: Legacy code using v1.x properties (e.g., $faker->realText) needs automated migration — run rector process src/ --config vendor/fakerphp/faker/rector-migrate.php.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport