Examples

In this chapter are some example usages of Dogmatist, the Builder and how to create samples.

Basic example

// start by creating a dogmatist instance
$dogmatist = \Bravesheep\Dogmatist\Factory::create();

// let's create two main builders: one for Person objects and one for
// Post object. The Person object gets its own Address builder which will
// generate specific instances per person
$dogmatist
    ->create(Person::class)
        ->fake('name', 'name')
        ->fake('birthday', 'datetimeBetween', ['-100 years', '-15 years'])
        ->fake('company', 'company')
        ->relation('addresses', Address::class)
            ->fake('address', 'streetAddress')
            ->fake('postcode', 'postcode')
            ->fake('city', 'city')
            ->fake('country', 'country')
        ->done()
        ->multiple('addresses', 1, 5)
        ->select('gender', ['male', 'female'])
        ->save('person', 10)
    ->done()
    ->create(Post::class)
        ->link('poster', 'person')
        ->fake('title', 'sentence')
        ->fake('text', 'text', [5000])
        ->value('visible', true)
        ->save('post')
    ->done()
;

// gets us one of the 10 persons that could be created
$person = $dogmatist->sample('person');

// gets us a random new post
$post = $dogmatist->sample('post');

try {
    // will throw an exception
    $people = $dogmatist->samples('person', 20);
} catch (SampleException $e) {
    print $e->getMessage();
}

// this will generate an array of 20 Person objects
$people = $dogmatist->freshSamples('person', 20);

Events

// start by creating a dogmatist instance
$dogmatist = \Bravesheep\Dogmatist\Factory::create();

// here we add a callback to append the slug, which has to base its value
// on another faked value in the object
$builder = $dogmatist
    ->create(Post::class)
        ->fake('title', 'person')
        ->fake('content', 'text', [5000])
        ->onCreate(function (&$value) {
            $obj->setSlug(Slugifier::slugize($obj->getTitle()));
        });

$sample = $dogmatist->sample($builder);

// so now we have a slug
print $sample->getSlug();