geno/wp-content/plugins/mailpoet/lib/Automation/Engine/Data/Field.php
2024-02-01 11:54:18 +00:00

73 lines
1.4 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Automation\Engine\Data;
if (!defined('ABSPATH')) exit;
use MailPoet\Automation\Engine\Integration\Payload;
class Field {
public const TYPE_BOOLEAN = 'boolean';
public const TYPE_INTEGER = 'integer';
public const TYPE_NUMBER = 'number';
public const TYPE_STRING = 'string';
public const TYPE_ENUM = 'enum';
public const TYPE_ENUM_ARRAY = 'enum_array';
public const TYPE_DATETIME = 'datetime';
/** @var string */
private $key;
/** @var string */
private $type;
/** @var string */
private $name;
/** @var callable */
private $factory;
/** @var array */
private $args;
public function __construct(
string $key,
string $type,
string $name,
callable $factory,
array $args = []
) {
$this->key = $key;
$this->type = $type;
$this->name = $name;
$this->factory = $factory;
$this->args = $args;
}
public function getKey(): string {
return $this->key;
}
public function getType(): string {
return $this->type;
}
public function getName(): string {
return $this->name;
}
public function getFactory(): callable {
return $this->factory;
}
/** @return mixed */
public function getValue(Payload $payload) {
return $this->getFactory()($payload);
}
public function getArgs(): array {
return $this->args;
}
}