Basically I need a way to generate vCards fake's ones to seed my database and test my API, we are using under the hood the new Laravel Lumen micro framework, however we are not gonna talk about Lumen
in here just about Faker and explain how you can create your own Provider.
Let's get started
Is good have in mind the following:
And since Faker starts with the last provider, you can easily override existing formatters: just add a provider containing methods named after the formatters you want to override.
You can find the code that does all this on our repo cloudmanaged/vcard-faker-provider
However all the code you are gonna find there is basically the following:
<?php namespace Faker\Provider;
class VCard extends \Faker\Provider\Base
{
public function vcard()
{
$raw = 'BEGIN:VCARD' . "\n" .
'N:' . $this->generator->lastName. ';' . $this->generator->firstName . ';;' . $this->generator->title . ';' ."\n" .
'ADR;DOM;PARCEL;HOME:;;' . $this->generator->streetAddress . ';' . $this->generator->city .';' . $this->generator->state. ';' . $this->generator->postcode . ';' . "\n" .
'EMAIL;INTERNET:' . $this->generator->email . "\n" .
'ORG:' . $this->generator->company . "\n" .
'TITLE:' . $this->generator->bs . "\n" .
'END:VCARD';
return $this->generator->parse($raw);
}
}
Let's use it
To use it we just need to add it first to our composer
file:
- First add the repository
"repositories": [
{
"type":"vcs",
"url":"https://github.com/CloudManaged/vcard-faker-provider"
}
],
- And then add the
requirement
composer require cloudmanaged/vcard-faker-provider
Once we got it add the dependecies to our project we can use it like:
$faker = \Faker\Factory::create();
$faker->addProvider(new \Faker\Provider\en_US\Person($faker));
$faker->addProvider(new \Faker\Provider\en_US\Address($faker));
$faker->addProvider(new \Faker\Provider\en_US\PhoneNumber($faker));
$faker->addProvider(new \Faker\Provider\en_US\Company($faker));
$faker->addProvider(new \Faker\Provider\Internet($faker));
$faker->addProvider(new Faker\Provider\VCard($faker));
$faker->vcard
And that will return a new vCard each time
Resources