1. Go to this page and download the library: Download mf1dd/object-builder library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mf1dd / object-builder example snippets
class Address
{
public function __construct(
private readonly mixed $street,
private readonly string|int $zip,
private readonly string $city,
private readonly ?string $country,
private readonly bool $mainResidence,
) {}
}
$result = ObjectBuilder::init(Address::class)->build();
// returns instance of Address with random values
class Person
{
public function __construct(
private readonly Name $name,
private readonly int $age,
private readonly Address $address,
) {}
}
$result = ObjectBuilder::init(Person::class, [
'age' => 25,
'name' => [
'firstName' => 'Max',
'lastName' => 'Mustermann'
],
'address' => [
'city' => 'Berlin',
]
])->build();
// $result->getAge() === 25
// $result->getName()->getFirstName() === 'Max'
// $result->getAddress()->getCity() === 'Berlin'
// $result->getAddress()->getZip() === random int|string
enum MyEnumeration: string
{
case OK = 'OK';
case WARNING = 'WARNING';
case ERROR = 'ERROR';
}
$result = ObjectBuilder::init(MyEnumeration::class)->build();
// returns one of MyEnumeration cases
$result = ObjectBuilder::init(MyEnumeration::class, ['OK'])->build();
// returns MyEnumeration::OK
$result = ObjectBuilder::init(MyEnumeration::class, ['WARNING', 'ERROR'])->build();
// returns one of MyEnumeration::WARNING|MyEnumeration::ERROR
$result = ObjectBuilder::init(MyInterface::class)->build();
// returns Object of MyInterfaceClass
$value = $result->myMethod()
// returns random value matching its return type.
readonly class ReadonlyPerson
{
public function __construct(
public string $name,
public int $age,
public ?ReadonlyAddress $address = null,
) {}
}
$result = ObjectBuilder::init(ReadonlyPerson::class, [
'name' => 'Alice',
'address' => ['street' => 'Main St', 'city' => 'Springfield'],
])->build();
// $result->name === 'Alice'
// $result->address->street === 'Main St'
abstract class AbstractVehicle
{
public function __construct(public readonly string $brand) {}
abstract public function getType(): string;
}
class Car extends AbstractVehicle
{
public function getType(): string { return 'car'; }
}
$result = ObjectBuilder::init(AbstractVehicle::class)->build();
// returns instance of Car (or another concrete subclass)
use MF1DD\Application\Services\StockClassHandlerService;
StockClassHandlerService::register(new MyCustomHandler());
use MF1DD\UserInterface\ObjectBuilder;
$result = ObjectBuilder::init(Person::class)
->with('age', ['min' => 18, 'max' => 65])
->with('email', ['format' => 'email'])
->build();
// $result->getAge() is between 18 and 65
// $result->getEmail() is a random email address
class User
{
public function __construct(
public readonly string $timezone, // random IANA timezone
public readonly string $countrycode, // random ISO country code
public readonly string $email, // random email address
public readonly string $firstname, // random first name
public readonly string $lastname, // random last name
public readonly string $city, // random city name
public readonly string $street, // random street name
public readonly string $zip, // random postal code
public readonly string $phone, // random phone number
public readonly string $uuid, // random UUID v4
public readonly string $url, // random URL
) {}
}
$result = ObjectBuilder::init(User::class)->build();
// All properties contain semantically meaningful random values
use MF1DD\Application\Services\DataTypeService;
use MF1DD\Domain\DataTypeInterface;
use MF1DD\Domain\Dto\Property;
class CustomBuilder implements DataTypeInterface
{
public function build(): mixed
{
return 'custom value';
}
public function setProperty(Property $property): self
{
return $this;
}
public function buildAsString(): string
{
return "'custom value'";
}
}
DataTypeService::register('custom_type', new CustomBuilder());
use MF1DD\Domain\ClassBuilderInterface;
$result = ObjectBuilder::init(MyClass::class)
->withBuilder($myCustomBuilder)
->build();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.