fake! - philipp-rieber.net · qweqwe sdfsdf [email protected] wefwef first_name last_name...
TRANSCRIPT
![Page 1: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/1.jpg)
FAKE!CUSTOMIZED FIXTURES WITH
FAKER & ALICEby Philipp Rieber
PHP User Group Munich – May 27th 2015
0
![Page 2: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/2.jpg)
ABOUT://ME
Philipp Rieber
I work at
I tweet
I'm a technical author
More info at
@bicpi
http://philipp-rieber.net
![Page 3: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/3.jpg)
FIXTURES
“Fixtures are used to load a controlled set of datainto a database. This data can be used for testing
or could be the initial data required for theapplication to run smoothly.”
from the Symfony docs
![Page 4: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/4.jpg)
A USER MODELclass User { public $firstName;
public $lastName;
public $email;
public $city;}
![Page 5: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/5.jpg)
LISTING THE USERS
First name Last name Email City? ? ? ?? ? ? ?? ? ? ?
![Page 6: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/6.jpg)
USING MANUAL SKILLS
First name Last name Email CityPhilipp Rieber [email protected] Munichqweqwe sdfsdf [email protected] wefweffirst_name last_name [email protected] city
![Page 7: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/7.jpg)
USE SOME AUTOMATION
First name Last name Email CityFirst 1 Last 1 [email protected] City 1First 2 Last 2 [email protected] City 2First 3 Last 3 [email protected] City 3
![Page 8: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/8.jpg)
THE SYMFONY WAYclass LoadData extends AbstractFixture{ public function load(ObjectManager $manager) { for($i = 1; $i <= 3; $i++) { $user = (new User()) ->setFirstName("First $i") ->setLastName("Last $i"); ->setEmail("[email protected]"); ->setCity("City $i"); $manager->persist($user); } $manager->flush(); }}
![Page 9: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/9.jpg)
BUT THERE'S MUCH MORE TO TEST DATA
RealisticReproducibleUniquenessOptional dataConditionsLocalization
![Page 10: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/10.jpg)
Unique random name$names = ['Klara Fall', 'Rainer Zufall', ...];shuffle($names);$uniqueName = array_pop($names);
![Page 11: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/11.jpg)
Random timezone$timezones = \DateTimeZone::listIdentifiers();$timezone = $timezones[array_rand($timezones)];
![Page 12: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/12.jpg)
Random german postcode$zip = sprintf('%05d', mt_rand(0, 99999));
![Page 13: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/13.jpg)
Random HTML color code$hexColor = sprintf('#%06X', mt_rand(0, 0xFFFFFF));
![Page 14: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/14.jpg)
Last login – needs to be in the past$someHoursAgo = time() - mt_rand(0, 3600*72);$lastLogin = new \DateTime('@'.$someHoursAgo);
![Page 15: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/15.jpg)
Random elements from a value set$skills = ['PHP', 'SQL', 'NoSQL' ...];$users = [];for ($i = 0; $i < 10; $i++) { $userSkills = []; $keys = (array) array_rand($skills, mt_rand(1, 3)); foreach($keys as $key ) { $userSkills[] = $skills[$key]; }}
![Page 16: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/16.jpg)
Optional random text with a probabilty of 35%$optionalText = mt_rand(0, 100) <= 35 ? 'Lorem ipsum dolor sit amet ...' : null;
![Page 17: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/17.jpg)
FAKER
A PHP library to create realistic test dataCreated by Francois Zaninotto – @francoisz
![Page 18: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/18.jpg)
INSTALLATION$ composer require fzaninotto/Faker
Initialize faker generatorrequire_once 'vendor/autoload.php';
$faker = Faker\Factory::create();
![Page 19: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/19.jpg)
FAKER MAGIC$faker->title; // e.g. "Mrs."
$faker->firstName; // e.g. "Lucy"
$faker->lastName; // e.g. "Hessel"
$faker->email; // e.g. "[email protected]"
$faker->url; // e.g. "http://reichert.com/sit-autem"
$faker->ipv4; // e.g. "116.132.63.32"
$faker->numberBetween(4, 78) // e.g. "43"
![Page 20: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/20.jpg)
FORMATTERS
Generator properties/methods are called Formatters$faker->firstName; // e.g. "Lucy"$faker->firstName(); // e.g. "Lucy"
$faker->firstNameMale; // e.g. "John"
$faker->numberBetween(56, 391); // e.g. 183$faker->randomElement(['md5', 'sha1', 'sha256']); // e.g. "sha1"
// e.g. DateTime('1982-12-09 13:42:22')$faker->dateTimeBetween('-63 years', 'now');
// => 'http://lorempixel.com/640/480/', random image$faker->imageUrl(640, 480)
![Page 21: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/21.jpg)
PROVIDERS
Formatters are grouped in Providers
Person Address Internet ...title street ipv6 ...name postcode freeEmail ...suffix country companyEmail ...... ... ... ...
![Page 22: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/22.jpg)
UNIQUE AND OPTIONAL$faker->unique()->email;
$faker->optional(.35)->text(150);
$faker->optional(.35, 'n/a')->text;
![Page 23: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/23.jpg)
LOCALIZATION$de = Faker\Factory::create('de_DE');$de->name; // e.g. "Ingo Barth"$de->city; // e.g. "Bremen"$de->companySuffix; // e.g. "GmbH & Co. KG"
$at = Faker\Factory::create('de_AT');$at->city; // e.g. "Gerasdorf bei Wien"
$fr = Faker\Factory::create('fr_FR');$fr->name; // e.g. "Hélène Moreau"$fr->departmentName; // e.g. "Pyrénées-Atlantiques"
![Page 24: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/24.jpg)
CUSTOM PROVIDERS & FORMATTERSclass MyProvider{ public function encodePassword($plain) { $digest = hash('sha512', $plain, true); for ($i = 1; $i < 1000; $i++) { $digest = hash('sha512', $plain, true); }
return base64_encode($digest); }}
$faker->addProvider(new MyProvider()); // Register custom provider
$faker->encodePassword('mySecretPassword'); // Usage
![Page 25: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/25.jpg)
SEEDING$faker = Faker\Factory::create();$faker->seed(1);
$faker->name; // always the same name
![Page 26: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/26.jpg)
PERSISTENCE
Persist 50 Doctrine User entities with fake data$populator = new Faker\ORM\Doctrine\Populator($faker, $entityManager);$populator->addEntity('User', 50);
$primaryKeys = $populator->execute();
![Page 27: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/27.jpg)
THE SYMFONY WAYclass LoadData extends AbstractFixture implements ContainerAwareInterface{ public function load(ObjectManager $manager) { $faker = $this->container->get('faker'); for($i = 1; $i <= 3; $i++) { $user = (new User()) ->setFirstName($faker->firstName) ->setLastName($faker->lastName); ->setEmail($faker->email); ->setCity($faker->city); $manager->persist($user); } $manager->flush(); }}
![Page 28: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/28.jpg)
ALICE
A PHP library to generate and organize fixturesCreated by the Nelmio company
![Page 29: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/29.jpg)
INSTALLATION$ composer require nelmio/alice
require_once 'vendor/autoload.php';
$loader = new Nelmio\Alice\Loader\Yaml();
$objects = $loader->load(__DIR__.'/fixtures.yml');
![Page 30: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/30.jpg)
MAPPING DATA TO OBJECTS# fixtures.ymlAcme\Entity\User: user_max: firstName: Max lastName: Mustermann email: [email protected] city: Munich user_erika: firstName: Erika lastName: Musterfrau email: [email protected] city: Berlin
# Acme\Entity\Team:# ...
![Page 31: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/31.jpg)
OBJECT RANGEAcme\Entity\User: user_{1..50}: name: John Doe email: [email protected]
![Page 32: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/32.jpg)
DYNAMIC DATAAcme\Entity\User: user_{1..50}: name: John Doe <current()> email: john-<current()>@doe.net
![Page 33: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/33.jpg)
FAKER INTEGRATIONAcme\Entity\User: user_{1..50}: name: <name()> email: <email()>
![Page 34: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/34.jpg)
UNIQUE FIELDSAcme\Entity\User: user_{1..50}: name: <name()> email (unique): <email()>
![Page 35: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/35.jpg)
OPTIONAL FIELDSAcme\Entity\User: user_{1..50}: name: <name()> bio: 35%? <text()> : n/a
![Page 36: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/36.jpg)
LOCALIZATIONAcme\Entity\User: user_{1..50}: name: <de_DE:name()> email: <fr_FR:email()>
![Page 37: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/37.jpg)
OBJECT REFERENCESAcme\Entity\User: user_{1..50}: name: <name()> email: <email()>
Acme\Entity\Team: team: members: [@user_11, @user_38, @user_41]
![Page 38: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/38.jpg)
OBJECT REFERENCESAcme\Entity\Team: team: users: [@user_*, @user_*, @user_*]
![Page 39: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/39.jpg)
OBJECT REFERENCESAcme\Entity\Team: team: users: 3x @user_*
![Page 40: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/40.jpg)
OBJECT REFERENCESAcme\Entity\Team: team: users: <numberBetween(1, 3)>x @user_*
![Page 41: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/41.jpg)
PERSISTENCE$loader = new \Nelmio\Alice\Fixtures\Loader();$objects = $loader->load(__DIR__.'/fixtures.yml');
$persister = new \Nelmio\Alice\Persister\Doctrine($objectManager);$persister->persist($objects);
Shortcut:$objects = Nelmio\Alice\Fixtures::load( __DIR__.'/fixtures.yml', $objectManager);
![Page 42: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/42.jpg)
ADVANCED
And there's much more ...
References: @self, @user_2->emailTemplatesInheritanceParametersFile IncludesVariablesValue ObjectsProcessors...
![Page 43: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/43.jpg)
ALICEBUNDLE
Faker & Alice integration with Symfony and Doctrine
![Page 44: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/44.jpg)
INSTALLATION & ACTIVATION$ composer require doctrine/doctrine-fixtures-bundle$ composer require hautelook/alice-bundle
class AppKernel extends Kernel{ public function registerBundles() { $bundles = array( // ... );
if (in_array($this->getEnvironment(), array('dev', 'test'))) { $bundles[] = new Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle(); $bundles[] = new Hautelook\AliceBundle\HautelookAliceBundle(); } }}
![Page 45: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/45.jpg)
CONFIGURATION# config.ymlhautelook_alice: locale: de_DE seed: 1
![Page 46: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/46.jpg)
USAGEnamespace App\AppBundle\DataFixtures\ORM;
use Hautelook\AliceBundle\Alice\DataFixtureLoader;use Nelmio\Alice\Fixtures;
class DataLoader extends DataFixtureLoader{ protected function getFixtures() { return [__DIR__ . '/fixtures.yml']; }}
$ app/console doctrine:fixtures:load
![Page 47: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/47.jpg)
CUSTOM FORMATTERSuse \Faker\Provider\Base as FakerBase;
class DataLoader extends DataFixtureLoader{ protected function getFixtures() { return [__DIR__ . '/fixtures.yml']; }
public function encodePassword($plain) { // ... }}
# fixtures.ymlUser: password: <encodePassword('mySecretPassword')>
![Page 48: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/48.jpg)
SUMMARY
When using Symfony and the AliceBundle you have
a little loader class with almost nothing in itstraightforward YAML files with test data
![Page 49: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/49.jpg)
RESOURCES
Faker libraryAlice libraryAliceBundleKnpUniversity Screencast – $3
![Page 50: FAKE! - philipp-rieber.net · qweqwe sdfsdf fwef@wfe.df wefwef first_name last_name example@example.org city. USE SOME AUTOMATION First name Last name Email City First 1 Last 1 user-1@example.org](https://reader034.vdocument.in/reader034/viewer/2022051604/5fff626f8c7cf83f662f7a97/html5/thumbnails/50.jpg)
?Slides
http://philipp-rieber.net#talks
Contact@bicpi