stephanecoinon/object-factory

Create plain PHP objects using Laravel model factories

v0.0.1 2017-10-02 21:10 UTC

This package is auto-updated.

Last update: 2024-04-11 13:41:08 UTC


README

Would you like to build plain PHP objects using Laravel 5 model factories?

BuiltByFactory trait makes it a breeze...

Step 1: Install this package

composer require stephanecoinon/object-factory

Step 2: define your plain model using the trait:

<?php

// /app/Popo.php

namespace App;

use StephaneCoinon\ObjectFactory\BuiltByFactory;

/**
 * This is a plain old PHP class, we do not extend Eloquent.
 */
class Popo
{
    use BuiltByFactory;

    /**
     * Objects built by model factory are constructed from an array of
     * attributes.
     *
     * Here's an example of implementation.
     *
     * @param  array  $attributes
     * @return static
     */
    public function __construct($attributes = [])
    {
        foreach ($attributes as $key => $value) {
            $this->$key = $value;
        }
    }
}

Step 3: define the factory:

<?php

// /database/factories/PopoFactory.php

use Faker\Generator as Faker;

$factory->define(App\Popo::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
    ];
});

Step 4: build your objects!

// A single instance
$object = factory(App\Popo::class)->make();

// Or a collection
$objects = factory(App\Popo::class, 3)->make();