PHP Classes

File: doc/samples/try-advanced-transfer-generator.php

Recommend this page to a friend!
  Classes of Sergii Pryz   Transfer Object   doc/samples/try-advanced-transfer-generator.php   Download  
File: doc/samples/try-advanced-transfer-generator.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Transfer Object
Generate transfer objects using property hooks
Author: By
Last change: Actualized samples dock block
Standartized samples comments
Date: 4 months ago
Size: 4,670 bytes
 

Contents

Class file image Download
<?php

declare(strict_types=1);

use
Picamator\Doc\Samples\TransferObject\Advanced\AddressData;
use
Picamator\Doc\Samples\TransferObject\Advanced\CredentialsData;
use
Picamator\Doc\Samples\TransferObject\Generated\AdvancedTransferGenerator\AdvancedCustomerTransfer;
use
Picamator\Doc\Samples\TransferObject\Generated\TransferGenerator\CustomerTransfer;
use
Picamator\TransferObject\TransferGenerator\TransferGeneratorFacade;

require_once
__DIR__ . '/../../vendor/autoload.php';

echo <<<'STORY'
=======================================================
       How to use custom Data Transfer Object
                        and
        Apply Transfer Object across modules
=======================================================

STORY;

echo <<<'STORY'
=======================================================
Let's take Generated\TransferGenerator\CustomerTransfer
=======================================================

STORY;
$customerTransfer = new CustomerTransfer();
$customerTransfer->firstName = 'Ignacy';
$customerTransfer->lastName = 'Rzecki';

echo <<<'STORY'
=======================================================
          Let's take Advanced\CredentialsData
                      use
            DummyTransferAdapterTrait
=======================================================

STORY;
$credentialsData = new CredentialsData();
$credentialsData->login = 'ignacy.rzecki';
$credentialsData->token = 'Lalka';

$encodedCredentialsData = json_encode($credentialsData);
$iteratedCredentialsData = implode(', ', iterator_to_array($credentialsData));

echo <<<DEBUG
Count: {$credentialsData->count()}
JSON encode:
$encodedCredentialsData
Iterated: [
$iteratedCredentialsData]

DEBUG;


echo <<<'STORY'
=======================================================
           Let's take Advanced\AddressData
                     use
             TransferAdapterTrait
=======================================================

STORY;
$addressData = new AddressData();
$addressData->street = 'Krakowskie Przedmie?cie';
$addressData->houseNumber = '9';
$addressData->city = 'Warszawa';
$addressData->postCode = '00-068';
$addressData->country = 'Polska';

$encodedAddressData = json_encode($addressData);

$iteratedAddressData = implode(', ', iterator_to_array($addressData));

echo <<<DEBUG
Count: {$addressData->count()}
JSON encode:
$encodedAddressData
Iterated: [
$iteratedAddressData]

DEBUG;


echo <<<'STORY'
=======================================================
    Create a Definition file combining all objects
=======================================================

AdvancedCustomer:
  customer:
    type: "Picamator\\Doc\\Samples\\TransferObject\\Generated\\TransferGenerator\\CustomerTransfer"
  address:
    type: "Picamator\\Doc\\Samples\\TransferObject\\Advanced\\AddressData"
  credentials:
    type: "Picamator\\Doc\\Samples\\TransferObject\\Advanced\\CredentialsData"


STORY;

echo <<<'STORY'
=======================================================
           Generate Transfer Object
                  with notice
    for demonstration exception handling was skipped
=======================================================

STORY;
$configPath = __DIR__ . '/config/advanced-transfer-generator/generator.config.yml';
new
TransferGeneratorFacade()->generateTransfersOrFail($configPath);

echo <<<'STORY'
=======================================================
        Try newly Generated Transfer Object
                      and
                     Debug
=======================================================

STORY;

$advancedCustomerTransfer = new AdvancedCustomerTransfer();
$advancedCustomerTransfer->customer = $customerTransfer;
$advancedCustomerTransfer->address = $addressData;
$advancedCustomerTransfer->credentials = $credentialsData;

var_dump($advancedCustomerTransfer->toArray());

echo <<<'STORY'
=======================================================
              Try how fromArray() works
=======================================================

STORY;
$advancedCustomerTransfer = new AdvancedCustomerTransfer()
    ->
fromArray([
       
AdvancedCustomerTransfer::CUSTOMER => [
           
CustomerTransfer::FIRST_NAME => 'Theodor',
           
CustomerTransfer::LAST_NAME => 'Storm'
       
],
       
AdvancedCustomerTransfer::ADDRESS => [
           
'street' => 'Wasserreihe',
           
'houseNumber' => '31',
           
'city' => 'Husum',
           
'postCode' => '25813',
           
'country' => 'Deutschland'
       
],
       
AdvancedCustomerTransfer::CREDENTIALS => [
           
'login' => 'theodor.storm',
           
'token' => 'Der Schimmelreiter'
       
]
    ]);

var_dump($advancedCustomerTransfer->toArray());