mirror of
https://github.com/OpenXE-org/OpenXE.git
synced 2024-12-26 06:30:29 +01:00
80 lines
1.6 KiB
PHP
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);
|
||
|
}
|
||
|
}
|