#Samsui
Samsui is a factory library for building PHP objects useful for setting up test data in your applications. It is mainly inspired by Rosie for JavaScript and factory_girl for Ruby.
Samsui women refers to a group of Chinese immigrants who came to Singapore to work in construction and industries. Their hardwork contributed to Singapore's development as a colony and young nation.
With Samsui, you can quickly build prototype application and generate as many data as you need for testing your prototype.
##Installation
Samsui is a PHP library that manages its dependencies using Composer. You can directly use Samsui in your application through Composer as well:
{
"require": {
"mauris/samsui": "1.0.*"
}
}
Then just run composer:
$ php composer.phar install
##Usage
You can provide definition of your objects to Samsui:
use Samsui\Factory;
$factory = new Factory();
// define an object quickly
$factory->define('person')
->sequence('personId')
->attr('firstName', 'James')
->attr('lastName', 'Clark')
->attr('email', function ($i, $o) {
return strtolower($o->firstName . '.' . $o->lastName . '@example.com');
})
->attr('createdTime', function () {
return time();
});
You can build one at a time, or hundreds of them on the go!
// build them on the go!
$person = $factory->build('person');
// or build many!~
$people = $factory->build('person', 500);
The output of a person object would be:
{
personId: 1,
firstName: 'James',
lastName: 'Clark',
email: 'james.clark@example.com',
createdTime: 1383465074
}
You can also use Samsui's fake data generator to fill your objects with real variety:
use Samsui\Factory; use Samsui\Generator\Generator;
$factory = new Factory();
// define an object quickly
$factory->define('person')
->sequence('personId')
->attr('firstName', Generator::person()->firstName)
->attr('lastName', Generator::person()->lastName)
->attr('email', function ($i, $o) {
return Generator::email()->emailAddress(
array(
'firstName' => $o->firstName,
'lastName' => $o->lastName,
'domains' => array(
'hotmail.com',
'gmail.com',
'example.com'
)
)
);
})
->attr('createdTime', function () {
return time();
});
##Upcoming
- Implementation of Data Generators for use with attributes
- Names (different locale)
- Email addresses
- Addresses (from different countries) and Postal Codes
- Age (based on age groups defined)
- Gender
- Lorem Ipsum text
- DateTimes (based on range or sequence)
- Serial numbers (barcode standards)
- Hash functions output (SHA-1, SHA-256 etc.)
- GPS latitude / longitude
- Handphone numbers (based on country formats)
- Random amount of money
- Generation of Factory definitions to PHP classes directly