Skip to content

Commit

Permalink
add di, factory, serializer aware, readme
Browse files Browse the repository at this point in the history
  • Loading branch information
MartkCz committed Dec 31, 2020
1 parent 464bbaa commit 4111b60
Show file tree
Hide file tree
Showing 6 changed files with 129 additions and 0 deletions.
31 changes: 31 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
## Usage

```php
use WebChemistry\FormSerializer\FormSerializerAwareInterface;
use WebChemistry\FormSerializer\TFormSerializer;

class Form extends NetteForm implements FormSerializerAwareInterface {

use TFormSerializer;

}
```

```php

use Nette\Application\UI\Form;
use WebChemistry\FormSerializer\FormSerializerFactoryInterface;

class ArticleForm {

public function __construct(private FormSerializerFactoryInterface $formSerializerFactory) {}

public function create() {
$serializer = $this->formSerializerFactory->create($form = new Form(), Article::class);

return $form;
}

}

```
21 changes: 21 additions & 0 deletions src/DI/FormSerializerExtension.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php declare(strict_types = 1);

namespace WebChemistry\FormSerializer\DI;

use Nette\DI\CompilerExtension;
use WebChemistry\FormSerializer\FormSerializerFactory;
use WebChemistry\FormSerializer\FormSerializerFactoryInterface;

final class FormSerializerExtension extends CompilerExtension
{

public function loadConfiguration(): void
{
$builder = $this->getContainerBuilder();

$builder->addDefinition($this->prefix('factory'))
->setType(FormSerializerFactoryInterface::class)
->setFactory(FormSerializerFactory::class);
}

}
10 changes: 10 additions & 0 deletions src/FormSerializerAwareInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php declare(strict_types = 1);

namespace WebChemistry\FormSerializer;

interface FormSerializerAwareInterface
{

public function setSerializer(FormSerializer $serializer);

}
30 changes: 30 additions & 0 deletions src/FormSerializerFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php declare(strict_types = 1);

namespace WebChemistry\FormSerializer;

use Doctrine\ORM\EntityManagerInterface;
use Nette\Application\UI\Form;
use Symfony\Component\Serializer\Serializer;

final class FormSerializerFactory implements FormSerializerFactoryInterface
{

public function __construct(
private Serializer $serializer,
private EntityManagerInterface $em,
)
{
}

public function create(Form $form, string $class): FormSerializer
{
$serializer = new FormSerializer($form, $class, $this->serializer, $this->em);

if ($form instanceof FormSerializerAwareInterface) {
$form->setSerializer($serializer);
}

return $serializer;
}

}
12 changes: 12 additions & 0 deletions src/FormSerializerFactoryInterface.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php declare(strict_types = 1);

namespace WebChemistry\FormSerializer;

use Nette\Application\UI\Form;

interface FormSerializerFactoryInterface
{

public function create(Form $form, string $class): FormSerializer;

}
25 changes: 25 additions & 0 deletions src/TFormSerializer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php declare(strict_types = 1);

namespace WebChemistry\FormSerializer;

trait TFormSerializer
{

private FormSerializer $serializer;

/**
* @return static
*/
public function setSerializer(FormSerializer $serializer)
{
$this->serializer = $serializer;

return $this;
}

public function getSerializer(): FormSerializer
{
return $this->serializer;
}

}

0 comments on commit 4111b60

Please sign in to comment.