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.