Faker – генератор случайных данных

Faker – генератор случайных данных

От автора: на ранних этапах создания приложения, всегда возникает острая необходимость в тестовых данных, то есть в данных, которые будут отображаться на экран при проверке работоспособности отдельных участков кода. Также при работе с базой данных и формированию SQL запросов, таблицы желательно наполнить контентом, ведь в противном случае просто невозможно оптимизировать и проверить правильность работы последних. При этом ручное создание тестовых данных порой очень время затратное и это время бывает соизмеримо со временем, требуемым на написание функционала.

скачать исходники

В данном уроке я хотел бы представить Вашему вниманию, замечательную библиотеку Faker, написанную на языке PHP, которая представляет собой генератор случайных данных, причем сгенерировать можно данные практически любого формата.

Официальную страничку библиотеки, вместе с краткой, но довольно информативной документацией, можно найти на сервисе GitHub по ссылке. Для установки библиотеки на Ваш проект, достаточно выполнить одну простую команду в консоли, используя инструмент Composer:

Практический курс по созданию веб-приложения на PHP & MySQL с нуля!

Изучите курс и создайте ваше первое приложение на PHP всего за 3 дня!

Изучить курс
composer require fzaninotto/faker

При этом в директории проекта, будет создан каталог vendor, внутри которого Вы найдете рассматриваемую нами библиотеку. При этом хотел бы отметить, что по адресу vendor\fzaninotto\faker\src\Faker Вы найдете файл Generator.php, в котором определен одноименный класс Generator, свойства которого как раз предоставляют доступ к сгенерированным данным. Собственно в комментариях перед определением класса – приведен краткий справочник по хранимым данным в каждом свойстве (это на тот случай, если у Вас не будет доступа к страничке библиотеки на сервисе GitHub).

Теперь приступаем к работе с самой библиотекой. Собственно первым делом подключаем файл autoload.php, который был сгенерирован инструментом composer:

<?php
require "vendor/autoload.php";

Далее создаем объект класса Faker, используя метод create(). При этом в качестве первого аргумента можно передать код, интересующей Вас локализации (в комплекте библиотеки, поставляется множество различных локализаций).

$faker = Faker\Factory::create();

Собственно все приготовления завершены, и можно приступать к генерации данных. При этом для создания тестовой информации, достаточно обратиться к соответствующему свойству или методу объекта $faker, в зависимости от того, какие данные Вас интересуют.

Для начала, предположим, что Вам нужно сформировать имя пользователя и его адрес. Для этого достаточно вывести на экран значения двух свойств:

echo $faker->name.'<br>';
echo $faker->address.'<br>';

Соответственно результат будет следующим:

К свойствам можно обращаться многократно, к примеру, в цикле, что приведет к созданию множества тестовых данных. К примеру, давайте сгенерируем случайные числа:

for($i = 0; $i < 10; ++$i) {
 echo $faker->randomNumber.'<br>';
}

При этом на экране мы увидим следующее:

При добавлении модификатора unique(), Вы сможете создать уникальные не повторяющиеся данные.

Практический курс по созданию веб-приложения на PHP & MySQL с нуля!

Изучите курс и создайте ваше первое приложение на PHP всего за 3 дня!

Изучить курс
for($i = 0; $i < 10; ++$i) {
 echo $faker->unique()->randomNumber.'<br>';
}

Есть также модификатор позволяющий, разрешить пропуск генерации данных, его имя optional():

for($i = 0; $i < 10; ++$i) {
 echo $faker-> optional()->randomNumber.'<br>';
}

Помимо этого создаваемые данные можно провалидировать, в соответствии с логикой, описанной в пользовательской функции. К примеру сгенерируем числа, которые больше 5:

$func = function($digit) {
 return $digit > 5;
};
for($i = 0; $i < 10; ++$i) {
 echo $faker->valid($func)->randomDigit.'<br>';
}

На экране мы увидим следующее:

Помимо простых значений, можно генерировать более сложные, которые будут возвращаться в виде массива. К примеру, давайте сгенерируем информацию о кредитных картах, для платежных систем.

for ($i=0;$i<10;$i++) {
  $cc[$i] = $faker->creditCardDetails;
  $cc[$i]['security']=$faker->numberBetween(199,499);
 
}
echo "<pre>";
 print_r ($cc);
 echo "</pre>";

На экране мы при этом увидим следующий результат:

Также можно создать информацию для формирования данных о пользователе:

echo $faker->name.'<br>';
echo $faker->firstNameMale.'<br>';
echo $faker->address.'<br>';
echo $faker->city.'<br>';
echo $faker->country.'<br>';
echo $faker->email.'<br>';
echo $faker->password.'<br>';

Ну и то же самое для русской локализации:

$faker = Faker\Factory::create(ru_RU);
echo $faker->name.'<br>';
echo $faker->firstNameMale.'<br>';
echo $faker->address.'<br>';
echo $faker->city.'<br>';
echo $faker->country.'<br>';
echo $faker->email.'<br>';
echo $faker->password.'<br>'; 

Собственно здесь я привел только малую часть доступных свойств и методов, более подробно библиотека рассмотрена в видео версии урока.

Как Вы видите инструмент достаточно полезный и буквально за несколько минут можно получить любой набор тестовых данных и передать их либо на отображение в браузер, либо на сохранение в базу данных, файл или же необходимый документ.

На этом статья завершена. Всего Вам доброго и удачного кодирования!

Практический курс по созданию веб-приложения на PHP & MySQL с нуля!

Изучите курс и создайте ваше первое приложение на PHP всего за 3 дня!

Изучить курс

Хотите изучить ООП PHP?

Прямо сейчас посмотрите курс по объектно-ориентированному программированию на PHP (ООП PHP)!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree