PHP code example of eddiriarte / oh
1. Go to this page and download the library: Download eddiriarte/oh 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/ */
eddiriarte / oh example snippets
// Define your class(es):
class Person
{
public function __construct(
private string $firstName,
private string $lastName
) {}
//... here you might define getters/setters
}
// Initialize hydrator manager:
$manager = new \EddIriarte\Oh\Manager();
// Execute hydration:
$person = $manager->hydrate(Person::class, ['first_name' => 'Bruce', 'last_name' => 'Wayne']);
assert($person instanceof Person);
use EddIriarte\Oh\Manager;
$snakeCaseManager = new Manager(['source_naming_case' => StringCase::SnakeCase]); // default behaviour
$person1 = $snakeCaseManager->hydrate(Person::class, ['first_name' => 'Bruce', 'last_name' => 'Wayne']);
$camelCaseManager = new Manager(['source_naming_case' => StringCase::CamelCase]);
$person2 = $camelCaseManager->hydrate(Person::class, ['firstName' => 'Bruce', 'lastName' => 'Wayne']);
$studlyCaseManager = new Manager(['source_naming_case' => StringCase::StudlyCase]);
$person3 = $studlyCaseManager->hydrate(Person::class, ['FirstName' => 'Bruce', 'LastName' => 'Wayne']);
$kebabCaseManager = new Manager(['source_naming_case' => StringCase::KebabCase]);
$person4 = $kebabCaseManager->hydrate(Person::class, ['first-name' => 'Bruce', 'last-name' => 'Wayne']);
$anyCaseManager = new Manager(['source_naming_case' => StringCase::AnyCase]);
$person5 = $anyCaseManager->hydrate(Person::class, ['firstName' => 'Bruce', 'last_name' => 'Wayne']);
// Define your class(es):
class Person
{
private string $firstName;
private string $lastName;
//... here you might define getters/setters
}
// Initialize hydrator manager:
$manager = new \EddIriarte\Oh\Manager();
// Execute hydration:
$person = $manager->hydrate(Person::class, ['first_name' => 'Bruce', 'last_name' => 'Wayne']);
assert($person instanceof Person);
use EddIriarte\Oh\Manager;
use EddIriarte\Oh\Enums\PropertyVisibility;
class ReadOnlyPerson
{
public readonly string $firstName;
public readonly string $lastName;
public int $age;
}
// Initialize hydrator manager:
$manager = new Manager(['property_visibility' => PropertyVisibility::ReadOnly]);
// Execute hydration:
$person = $manager->hydrate(ReadOnlyPerson::class, ['first_name' => 'Bruce', 'last_name' => 'Wayne', 'age' => 44]);
var_dump($person);
// class ReadOnlyPerson#700 (3) {
// public readonly string $firstName =>
// string(5) "Bruce"
// public readonly string $lastName =>
// string(5) "Wayne"
// public int $age =>
// *uninitialized*
// }
use EddIriarte\Oh\Manager;
use EddIriarte\Oh\Enums\PropertyVisibility;
class Person
{
public function __construct(
private string $firstName,
private string $lastName
) {}
}
class Hero
{
public function __construct(
private string $name,
private Person $alias
) {}
}
// Execute hydration:
$hero = (new Manager())->hydrate(
Hero::class,
[
'name' => 'Batman',
'alias' => [
'first_name' => 'Bruce',
'last_name' => 'Wayne',
],
]
);
use EddIriarte\Oh\Attributes\ListMemberType;
use EddIriarte\Oh\Enums\PropertyVisibility;
use EddIriarte\Oh\Manager;
class Hero
{
public function __construct(private string $name)
{}
}
class HeroTeam
{
public function __construct(
private string $name,
#[ListMemberType(Hero::class)]
private array $heroes
) {}
}
$team = (new Manager())->hydrate(
HeroTeam::class,
[
'name' => 'Batman & Robin',
'heroes' => [
['name' => 'Batman'],
['name' => 'Robin'],
],
]
);
use Doctrine\Common\Collections\ArrayCollection;
use EddIriarte\Oh\Attributes\ListMemberType;
use EddIriarte\Oh\Enums\PropertyVisibility;
use EddIriarte\Oh\Manager;
class Hero
{
public function __construct(private string $name)
{}
}
class HeroTeam
{
public function __construct(
private string $name,
#[ListMemberType(Hero::class)]
private ArrayCollection $heroes
) {}
}
$team = (new Manager())->hydrate(
HeroTeam::class,
[
'name' => 'Batman & Robin',
'heroes' => [
['name' => 'Batman'],
['name' => 'Robin'],
],
]
);