Refactor Component class to use ComponentDataType enum

This commit is contained in:
netkas 2024-09-17 22:16:48 -04:00
parent 7e224d91b2
commit 27c79b1170
3 changed files with 18 additions and 20 deletions

View file

@ -299,7 +299,7 @@
{ {
$package_writer->addComponent(new Component( $package_writer->addComponent(new Component(
Functions::removeBasename($file_path, $this->project_manager->getProjectPath()), Functions::removeBasename($file_path, $this->project_manager->getProjectPath()),
Base64::encode(IO::fread($file_path)), ComponentDataType::BASE64_ENCODED->value Base64::encode(IO::fread($file_path)), ComponentDataType::BASE64_ENCODED
)); ));
} }

View file

@ -57,7 +57,7 @@
$stmts, $this->getProjectManager()->getProjectConfiguration()->getAssembly()->getPackage() $stmts, $this->getProjectManager()->getProjectConfiguration()->getAssembly()->getPackage()
); );
$component = new Component($component_name, ZiProto::encode($stmts), ComponentDataType::AST->value); $component = new Component($component_name, ZiProto::encode($stmts), ComponentDataType::AST);
$component->addFlag(ComponentFlags::PHP_AST->value); $component->addFlag(ComponentFlags::PHP_AST->value);
$pointer = $package_writer->addComponent($component); $pointer = $package_writer->addComponent($component);
@ -73,7 +73,7 @@
Console::outWarning(sprintf('Failed to compile file "%s" with error "%s"', $file_path, $e->getMessage())); Console::outWarning(sprintf('Failed to compile file "%s" with error "%s"', $file_path, $e->getMessage()));
} }
$component = new Component($component_name, Base64::encode(IO::fread($file_path)), ComponentDataType::BASE64_ENCODED->value); $component = new Component($component_name, Base64::encode(IO::fread($file_path)), ComponentDataType::BASE64_ENCODED);
$component->addFlag(ComponentFlags::PHP_B64->value); $component->addFlag(ComponentFlags::PHP_B64->value);
$package_writer->addComponent($component); $package_writer->addComponent($component);
} }

View file

@ -50,9 +50,9 @@
private $flags; private $flags;
/** /**
* @var string * @var ComponentDataType
*/ */
private $data_type; private ComponentDataType $data_type;
/** /**
* @var string * @var string
@ -64,10 +64,9 @@
* *
* @param string $name * @param string $name
* @param string $data * @param string $data
* @param string $data_type * @param ComponentDataType $data_type
*/ */
// TODO: $data_type Can be a enum case public function __construct(string $name, string $data, ComponentDataType $data_type=ComponentDataType::PLAIN)
public function __construct(string $name, string $data, string $data_type=ComponentDataType::PLAIN->value)
{ {
$this->name = $name; $this->name = $name;
$this->flags = []; $this->flags = [];
@ -148,10 +147,10 @@
/** /**
* Returns the data type of the component * Returns the data type of the component
* *
* @return string * @return ComponentDataType
* @see ComponentDataType * @see ComponentDataType
*/ */
public function getDataType(): string public function getDataType(): ComponentDataType
{ {
return $this->data_type; return $this->data_type;
} }
@ -168,11 +167,11 @@
{ {
switch($this->data_type) switch($this->data_type)
{ {
case ComponentDataType::PLAIN->value: case ComponentDataType::PLAIN:
case ComponentDataType::BINARY->value: case ComponentDataType::BINARY:
return $this->data; return $this->data;
case ComponentDataType::BASE64_ENCODED->value: case ComponentDataType::BASE64_ENCODED:
if(in_array(ComponentFlags::PHP_B64->value, $this->flags, true)) if(in_array(ComponentFlags::PHP_B64->value, $this->flags, true))
{ {
try try
@ -192,7 +191,7 @@
return base64_decode($this->data); return base64_decode($this->data);
case ComponentDataType::AST->value: case ComponentDataType::AST:
if(in_array(ComponentFlags::PHP_AST->value, $this->flags, true)) if(in_array(ComponentFlags::PHP_AST->value, $this->flags, true))
{ {
try try
@ -213,7 +212,7 @@
throw new OperationException(sprintf('Cannot decode component %s with data type %s because the component does not have a flag to decode it properly. Got: %s', $this->name, implode(' ', $this->flags), 'AST')); throw new OperationException(sprintf('Cannot decode component %s with data type %s because the component does not have a flag to decode it properly. Got: %s', $this->name, implode(' ', $this->flags), 'AST'));
default: default:
throw new InvalidArgumentException(sprintf('Unknown component data type "%s"', $this->data_type)); throw new InvalidArgumentException(sprintf('Unknown component data type "%s"', $this->data_type->value));
} }
} }
@ -221,10 +220,9 @@
* Sets the data of the component * Sets the data of the component
* *
* @param mixed $data * @param mixed $data
* @param string $data_type * @param ComponentDataType $data_type
*/ */
// TODO: $data_type can be a direct enum case public function setData(mixed $data, ComponentDataType $data_type=ComponentDataType::PLAIN): void
public function setData(mixed $data, string $data_type=ComponentDataType::PLAIN->value): void
{ {
$data_type = strtolower($data_type); $data_type = strtolower($data_type);
@ -249,7 +247,7 @@
return [ return [
($bytecode ? Functions::cbc('name') : 'name') => $this->name, ($bytecode ? Functions::cbc('name') : 'name') => $this->name,
($bytecode ? Functions::cbc('flags') : 'flags') => $this->flags, ($bytecode ? Functions::cbc('flags') : 'flags') => $this->flags,
($bytecode ? Functions::cbc('data_type') : 'data_type') => $this->data_type, ($bytecode ? Functions::cbc('data_type') : 'data_type') => $this->data_type->value,
($bytecode ? Functions::cbc('data') : 'data') => $this->data, ($bytecode ? Functions::cbc('data') : 'data') => $this->data,
]; ];
} }
@ -265,7 +263,7 @@
{ {
$name = Functions::array_bc($data, 'name'); $name = Functions::array_bc($data, 'name');
$component_data = Functions::array_bc($data, 'data'); $component_data = Functions::array_bc($data, 'data');
$data_type = Functions::array_bc($data, 'data_type') ?? ComponentDataType::PLAIN->value; $data_type = ComponentDataType::tryFrom(Functions::array_bc($data, 'data_type')) ?? ComponentDataType::PLAIN;
if($name === null) if($name === null)
{ {