OpenXE/classes/Components/SchemaCreator/Collection/TableOptionCollection.php
2021-05-21 08:49:41 +02:00

80 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace Xentral\Components\SchemaCreator\Collection;
use ArrayIterator;
use IteratorAggregate;
use Xentral\Components\SchemaCreator\Option\TableOption;
final class TableOptionCollection implements IteratorAggregate
{
/** @var array|TableOption[] */
private $values = [];
/**
* @param TableOption $option
*/
public function add(TableOption $option): void
{
$this->values[] = $option;
}
/**
* @param string $option
*
* @return void
*/
public function remove(string $option): void
{
foreach ($this->values as $key => $tableOption) {
if ($tableOption->getOption() === $option) {
unset($this->values[$key]);
}
}
$this->values = array_values($this->values);
}
/**
* @param string $option
*
* @return TableOption|null
*/
public function getTableOption(string $option): ?TableOption
{
foreach ($this->values as $tableOption) {
if ($tableOption->getOption() === $option) {
return $tableOption;
}
}
return null;
}
/**
* @param string $option
*
* @return bool
*/
public function hasOption(string $option): bool
{
foreach ($this->values as $tableOption) {
if ($tableOption->getOption() === $option) {
return true;
}
}
return false;
}
/**
* @return ArrayIterator|TableOption[]
*/
public function getIterator()
{
return new ArrayIterator($this->values);
}
}