Faker: criando dados de teste em PHP

Sempre que criamos uma aplicação com banco de dados, precisamos preencher com alguns valores de testes. É comum os desenvolvedores criarem a primeiro a funcionalidade de "cadastrar", então fica preenchendo o formulário com valores aleatórios. Isso se torna uma tarefa muito cansativa.

Para solucionar esse problema existem os Mocks, que permitem você criar objetos com dados falsos. Para isso iremos utilizar a biblioteca para PHP chamada Faker.

Instalar a biblioteca

A instalação é simples via Composer:

composer require fzaninotto/faker

Mãos à obra

Primeiro vamos importar a biblioteca via autoload (caso não esteja usando um framework que faça isso), depois vamos criar uma instância da classe Faker:

<?php 

require_once 'vendor/autoload.php';

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

Agora é só "chamar" as propriedades ou métodos que retornará os dados que desejamos. Por exemplo, para criar um nome falso, basta usar:

<?php

echo $faker->name;

Toda vez que usar a propriedade name, ele irá retornar um nome diferente. Como estamos usando o "pt_BR" na instância, irá retornar nomes brasileiros. Os nomes retornados são masculinos ou femininos, mas você especificar qual deseja retorna:

<?php

echo $faker->name('male');
echo $faker->name('female');

Você pode retornar o nome e sobrenome separadamente:

<?php

echo $faker->firstName;
echo $faker->firstNameMale;
echo $faker->firstNameFemale;

Ao usar o método firstName() irá retornar somente o primeiro nome, mas de forma aleatória (masculino ou feminino). Podemos novamente passar o parâmetro "male" ou "female". Outra forma é chamar diretamente a propriedade firstNameMale ou firstNameFemale.

Para gerar um RG, CPF ou CNPJ:

<?php

echo $faker->cpf;         // '145.343.345-76'
echo $faker->cpf(false);  // '45623467866'
echo $faker->cnpj;        // '23.663.478/0001-24'
echo $faker->cnpj(false); // '23663478000124'
echo $faker->rg;          // '84.405.736-3'
echo $faker->rg(false);   // '844057363'

Agora vamos criar um exemplo preenchendo um array com 2 mil dados de exemplo de clientes. Cada cliente vai ter uma informação diferente.

<?php

$clientes = [];
for ($i = 0; $i < 2000; $i++) {
    array_push($clientes, [
    	'nome' => $faker->name,
        'email' => $faker->email,
        'endereco' => $faker->address,
        'telefone' => $faker->phoneNumber,
        'foto' => $faker->imageUrl(100, 100),
        'cor_favorita' => $faker->hexcolor,
        'funcao' => $faker->jobTitle,
        'biografia' => $faker->text(200)
    ]);
}

Esses exemplos foi apenas uma pequena parte do que o Faker pode fazer. Para saber todas as funcionalidades ou as formas de usar as apresentadas aqui, basta acessar a documentação oficial no GitHub.