57 lines
1.4 KiB
PHP
57 lines
1.4 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace MMK2410\MyTodoList;
|
|
|
|
class Todo
|
|
{
|
|
const ExceptionMsgInvalidTitle = "Empty task title not allowed";
|
|
const ExceptionMsgInvalidState = "Invalid state tried to set.";
|
|
|
|
private string $title;
|
|
private string $state;
|
|
|
|
public function __construct(string $title)
|
|
{
|
|
$this->validateTitle($title);
|
|
$this->title = $title;
|
|
$this->state = TodoStates::Todo;
|
|
}
|
|
|
|
public function getTitle(): string
|
|
{
|
|
return $this->title;
|
|
}
|
|
|
|
public function setTitle(string $title): void
|
|
{
|
|
$this->validateTitle($title);
|
|
$this->title = $title;
|
|
}
|
|
|
|
public function getStatus(): string
|
|
{
|
|
return $this->state;
|
|
}
|
|
|
|
public function setState(string $state): void
|
|
{
|
|
$this->validateState($state);
|
|
$this->state = $state;
|
|
}
|
|
|
|
private function validateTitle(string $title): void
|
|
{
|
|
if (empty($title)) {
|
|
throw new \InvalidArgumentException(self::ExceptionMsgInvalidTitle);
|
|
}
|
|
}
|
|
|
|
private function validateState(string $state): void
|
|
{
|
|
$reflect = new \ReflectionClass(TodoStates::class);
|
|
$constantFound = $reflect->getConstant($state);
|
|
if ($constantFound === FALSE) {
|
|
throw new \InvalidArgumentException(self::ExceptionMsgInvalidState);
|
|
}
|
|
}
|
|
} |