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

Dummy Laravel Package

directorytree/dummy

directorytree/dummy is a Laravel/PHP package providing a lightweight dummy/test utility for generating placeholder data and fixtures. Useful for local development, demos, and automated tests where realistic sample content is needed quickly and consistently.

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. Installation:

    composer require directorytree/dummy
    

    No Laravel-specific dependencies (since v1.1.0), so works in any PHP project.

  2. Basic Usage:

    use DirectoryTree\Dummy\Dummy;
    
    $dummy = new Dummy();
    $fakeData = $dummy->make('User', ['name' => 'John Doe', 'email' => 'john@example.com']);
    
    • Replace 'User' with your model/class name.
  3. First Use Case: Generate fake test data for a model:

    $users = $dummy->times(5)->make('User');
    

Implementation Patterns

Core Workflows

  1. Model Factories:

    // Define a factory for a model (e.g., `app/Models/User.php`)
    $dummy->factory('User', function () {
        return [
            'name' => 'Fake Name',
            'email' => 'fake@example.com',
        ];
    });
    
    // Generate data
    $user = $dummy->make('User');
    
  2. Dynamic States (Laravel HasFactory Integration):

    $dummy->state('User', 'admin', [
        'role' => 'admin',
        'is_active' => true,
    ]);
    
    $admin = $dummy->state('User', 'admin')->make();
    
  3. Collections:

    $users = $dummy->times(10)->make('User'); // Array of 10 users
    $users = $dummy->times(10)->sequence('User'); // Sequenced data
    
  4. Custom Logic:

    $dummy->factory('Order', function () {
        return [
            'amount' => fn() => rand(10, 1000),
            'status' => fn() => ['pending', 'shipped', 'delivered'][rand(0, 2)],
        ];
    });
    

Integration Tips

  1. Laravel Models: Use with Laravel’s Factory trait for consistency:

    use Illuminate\Database\Eloquent\Factories\HasFactory;
    
    class User extends Model {
        use HasFactory;
    }
    
    • Dummy’s state() method aligns with Laravel’s factory states.
  2. Testing: Replace Laravel’s factory() with Dummy for non-Laravel projects:

    $dummy = new Dummy();
    $fakePost = $dummy->make('Post', ['title' => 'Test Post']);
    
  3. Sequencing: Generate incremental data:

    $dummy->sequence('User', function ($index) {
        return ['name' => "User $index", 'email' => "user$index@example.com"];
    });
    
  4. Dependency Injection: Bind Dummy to a container (e.g., Laravel’s IoC):

    $app->bind(Dummy::class, fn() => new Dummy());
    

Gotchas and Tips

Pitfalls

  1. No Laravel Dependency (Post-v1.1.0):

    • Missing Laravel helpers (e.g., Arr::random()). Use PHP’s native functions or Illuminate\Support\Arr if available.
    • Example workaround:
      $randomItem = Arr::random(['a', 'b', 'c']); // Requires `use Illuminate\Support\Arr;`
      
  2. Factory Overrides:

    • Later factory() calls overwrite earlier ones for the same class. Use state() for variations.
  3. Closure Scope:

    • Closures in factories run at generation time. Avoid relying on external state:
      // ❌ Avoid (uses external $counter)
      $dummy->factory('Item', fn() => ['id' => $counter++]);
      
      // ✅ Use closure args
      $dummy->sequence('Item', fn($index) => ['id' => $index]);
      
  4. Laravel 12+ Compatibility:

    • Test with Laravel 12’s new features (e.g., Model::factory() changes). Dummy may not mirror all updates.

Debugging

  1. Inspect Factories:

    $dummy->getFactories(); // Returns all registered factories.
    
  2. Clear Factories:

    $dummy->clearFactories(); // Reset all factories.
    
  3. Log Output: Enable verbose logging for debugging:

    $dummy->setVerbose(true);
    

Extension Points

  1. Custom Helpers: Extend with your own data generation logic:

    $dummy->addHelper('fakeName', fn() => 'Helper Name');
    $dummy->factory('User', ['name' => $dummy->fakeName()]);
    
  2. Plugin System: Create reusable factory sets:

    class UserFactories {
        public function __invoke(Dummy $dummy) {
            $dummy->factory('User', [...]);
            $dummy->state('User', 'admin', [...]);
        }
    }
    // Usage:
    $dummy = (new Dummy())->extend(new UserFactories());
    
  3. Mocking: Use for mocking dependencies in tests:

    $dummy->factory('Service', fn() => [
        'method' => fn() => 'mocked_result',
    ]);
    
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