2017-02-27



alvinashcraft
shared this story
from Envato Tuts+ Code.

Faker is an open-source library created by Francois Zaninotto that generates artificial filler data for your application and its testing needs.

Faker can be used in a vanilla PHP application, a framework such as Yii or Laravel, or within a testing library such as we alluded to with Codeception in this earlier Envato Tuts+ tutorial.

In today's tutorial, I'll review the basic installation and usage of Faker and its capabilities. As Zaninotto says:

"Whether you need to bootstrap your database, create good-looking XML documents, fill-in your persistence to stress test it, or anonymize data taken from a production service, Faker is for you."

And, overall, it delivers a wide range of simple capabilities useful for any testing regimen.

A little reminder before we get started, I do participate in the comment threads below. I'm especially interested if you have additional thoughts or want to suggest topics for future tutorials. If you have a question or topic suggestion, please post below. You can also reach me on Twitter @reifman directly.

Getting Started

Installing Faker

I began by creating a new code tree and adding fzaninotto/faker to composer.json below:

Then, I updated composer:

Faker is installed into the vendor directory. So, then I loaded at the top of an index.php file:

Next, I wanted to try a few simple example scenarios of generating data.

Simple Examples

I extended the Faker examples as follows and ran them from http://localhost:8888/faker:

With quick refreshes, I was presented with varying results such as:

And:

And:

Faker delivers on its promise.

Faker's Default Providers

All of the data generation methods in Faker are created from the implementation of providers. Here's the code that registers Faker's default providers—it's done for you:

So above, when I requested an address from Faker, it searched all the providers for methods which matched, ultimately using the Address() provider.

You can also write your own providers or browse a number of extensions to Faker that are available on the web.

Modifiers

Faker also offers special modifiers to aid your testing, such as unique(), optional(), or valid(). For example, you can generate unique numbers:

Here's the output of unique values:

If you use the optional() method, some numbers will be returned as NULL as if the user didn't enter a field on your form. Note: I couldn't get this method to work properly.

With valid(), you can register functions which determine whether the filler data meets specific requirements or would return an error or generate an error message on a user form.

Exploring the Providers

Faker offers a broad set of methods for generating random data for your application:

Base: simple methods for random letters, numbers, processed strings and regex

Lorem Ipsum Text: random Latin text

Person: names of people

Address: mailing addresses

Phone Number: phone numbers

Company: names of companies

Real Text: actual text written by human beings vs. meaningless Latin strings

Date and Time: random dates and times

Internet: emails, domains, etc.

User Agent: browser strings

Payment: credit card and SWIFT strings and numbers

Color: random colors

File: file extensions, file types, and file names

Image: URLs of filler images of different kinds

Uuid: unique IDs

Barcode: various barcode types, e.g. ISBN13

Miscellaneous: encryption codes, country codes, etc.

Biased: random numbers with bias

Let's experiment with a few more of these methods.

Payment Information

The code below generates ten people, their credit card information and security codes:

Here's some output from the above code:

Images

Here's a simple example of image generation:

But you can also generate cats:

It may be the cat generation capability that won me over. I can't wait for three-dimensional printing and soul activation to work with stuff like this.

Internationalized Data

With the code below, I created a table with four columns of names from France, Russia, America, and China:

Here's the output:

Creating Fake Email Addresses

Here's sample code to generate 25 fake email addresses from free providers such as Gmail and Yahoo:

Here's the resulting output:

Generating XML Documents

Faker offers a helpful example of generating XML; however, it requires that you're working with a framework and have a view architecture:

In Conclusion

I hope that this has served as a basic introduction for you to Faker, an incredibly useful free, open-source PHP library.

If you want to read further, I recommend Jim Nielsen's Filler Content: Tools, Tips and a Dynamic Example (Envato Tuts+), which provides an application designer's take on generating data. He suggests that you can be more effective when you apply fake data to create a more realistic experience during your design process.

If you'd like to know when my next Envato Tuts+ tutorial arrives, follow me @reifman on Twitter or check my instructor page. Currently, I'm working on two series you may appreciate:

Programming With Yii2 series

Building Your Startup with PHP about Meeting Planner; go schedule your first meeting there today.

Related Links

fzaninotto/Faker (GitHub)

Filler Content: Tools, Tips and a Dynamic Example (Envato Tuts+)

Programming With Yii2: Automated Testing With Codeception (Envato Tuts+)

Show more