1. Go to this page and download the library: Download e0ipso/shaper 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/ */
e0ipso / shaper example snippets
use JsonSchema\Validator;
use Shaper\Transformation\TransformationBase;
use Shaper\Util\Context;
use Shaper\Validator\JsonSchemaValidator;
class NumberToArray extends TransformationBase {
public function getInputValidator() {
return new JsonSchemaValidator(['type' => 'number'], new Validator());
}
public function getOutputValidator() {
$schema = ['type' => 'array', 'items' => ['type' => 'number']];
return new JsonSchemaValidator($schema, new Validator());
}
protected function doTransform($data, Context $context) {
return [$context['keyName'] => $data];
}
}
$t = new NumberToArray();
$t->transform(42, new Context(['keyName' => 'data'])); // ['data' => 42]
$t->transform(['foo']); // TypeError exception.
use JsonSchema\Validator;
use Shaper\Transformation\TransformationBase;
use Shaper\Util\Context;
use Shaper\Validator\InstanceofValidator;
use Shaper\Validator\JsonSchemaValidator;
use Shaper\Transformation\TransformationsQueue;
class ObjectToNumber extends TransformationBase {
public function getInputValidator() {
return new InstanceofValidator(\stdClass::class);
}
public function getOutputValidator() {
$schema = ['type' => 'number'];
return new JsonSchemaValidator($schema, new Validator());
}
protected function doTransform($data, Context $context) {
return isset($data->value) ? $data->value : 0;
}
}
$t = new TransformationsQueue();
$t->add(new ObjectToNumber());
$t->add(new NumberToArray());
$input = new \stdClass();
$input->value = 42;
$t->transform($input, new Context(['keyName' => 'data'])); // ['data' => 42]
use JsonSchema\Validator;
use Shaper\DataAdaptor\DataAdaptorBase;
use Shaper\Util\Context;
use Shaper\Validator\InstanceofValidator;
use Shaper\Validator\JsonSchemaValidator;
class MyDataAdaptor extends DataAdaptorBase {
protected function doTransform($data, Context $context) {
return $data->{$context['keyName']};
}
protected function doUndoTransform($data, Context $context) {
return (object) [$context['keyName'] => $data, 'bar' => 'default'];
}
public function getInputValidator() {
// In a real world scenario we would describe this as a JSON Schema.
return new InstanceofValidator(\stdClass::class);
}
public function getInternalValidator() {
// In a real world this would be your internal data object. Something like cheking that this is
// an object of class FieldItemInstance.
return new JsonSchemaValidator(['type' => 'string'], new Validator());
}
public function getOutputValidator() {
// In a real world scenario we would describe this as a JSON Schema. In most cases the output
// validator is the same as the input validator, so you can return the input validator here.
return new InstanceofValidator(\stdClass::class);
}
}
$da = new MyDataAdaptor();
$data = new \stdClass();
$data->lorem = 'caramba!';
$da->transform($data, new Context(['keyName' => 'lorem'])); // 'caramba!'
$da->transform(new NodeObject()); // TypeError exception.
$da->undoTransform('caramba!', new Context(['keyName' => 'lorem'])); // (object) ['lorem' => 'caramba!', 'bar' => 'default']
$da->undoTransform([]); // TypeError exception.
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.