mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-09-01 08:17:00 +02:00
Refactored TwigExtensions Part 1
This commit is contained in:
parent
8e6300079a
commit
b078389381
21 changed files with 301 additions and 89 deletions
60
src/Twig/TwigCoreExtension.php
Normal file
60
src/Twig/TwigCoreExtension.php
Normal file
|
@ -0,0 +1,60 @@
|
|||
<?php
|
||||
|
||||
namespace App\Twig;
|
||||
|
||||
use App\Entity\Base\AbstractDBElement;
|
||||
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
|
||||
use Twig\Extension\AbstractExtension;
|
||||
use Twig\TwigFilter;
|
||||
use Twig\TwigTest;
|
||||
|
||||
/**
|
||||
* The functionalities here extend the Twig with some core functions, which are independently of Part-DB.
|
||||
*/
|
||||
class TwigCoreExtension extends AbstractExtension
|
||||
{
|
||||
protected $objectNormalizer;
|
||||
|
||||
public function __construct(ObjectNormalizer $objectNormalizer)
|
||||
{
|
||||
$this->objectNormalizer = $objectNormalizer;
|
||||
}
|
||||
|
||||
public function getTests(): array
|
||||
{
|
||||
return [
|
||||
/*
|
||||
* Checks if a given variable is an instance of a given class. E.g. ` x is instanceof('App\Entity\Parts\Part')`
|
||||
*/
|
||||
new TwigTest('instanceof', static function ($var, $instance) {
|
||||
return $var instanceof $instance;
|
||||
}),
|
||||
/* Checks if a given variable is an object. E.g. `x is object` */
|
||||
new TwigTest('object', static function ($var) {
|
||||
return is_object($var);
|
||||
}),
|
||||
];
|
||||
}
|
||||
|
||||
public function getFilters()
|
||||
{
|
||||
return [
|
||||
/* Converts the given object to an array representation of the public/accessible properties */
|
||||
new TwigFilter('to_array', [$this, 'toArray']),
|
||||
];
|
||||
}
|
||||
|
||||
public function toArray($object)
|
||||
{
|
||||
if(! is_object($object) && ! is_array($object)) {
|
||||
throw new \InvalidArgumentException('The given variable is not an object or array!');
|
||||
}
|
||||
|
||||
//If it is already an array, we can just return it
|
||||
if(is_array($object)) {
|
||||
return $object;
|
||||
}
|
||||
|
||||
return $this->objectNormalizer->normalize($object, null);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue