Неизменяемый пользовательский массив PHP, содержащий объекты определенного типа

Во-первых, я хочу создать некий массив, который позволяет добавлять только объекты определенного типа; MyObject,

Во-вторых, я хочу, чтобы этот массив был неизменным, как массив значений объекта. я хочу добавить MyObjects при создании, доступ к ним с помощью foreach или используя смещения $myArray[0] но я не хочу, чтобы элементы добавлялись, удалялись или сортировались — или сами элементы менялись.

Итак, я посмотрел вверх ArrayObject, ArrayIterator а также ArrayAccess, Из того, что я могу сказать, они позволяют объекту действовать как массив. Я уверен, что это не то, что я хочу, но поскольку функциональность массива PHP на самом деле не является классом, который я могу расширить, я не уверен, какой путь выбрать.

Моя текущая реализация — просто тупой класс. Это не может быть использовано в foreach или используя смещения массива, такие как $myArray[0] без вызова getArray функция первая

foreach ($myArray->getArray() as $myObjecy) {

Это лучшее, что я могу придумать, но должен быть какой-то лучший способ сделать это?

MyCustomArray
{
protected $array = [];

public __construct(array $array)
{
foreach($array as $obj) {
if (! $obj instanceof \MyObject) {
Throw new \Exception();
}
}

$this->array = $array;
}

public getArray()
{
return $this->array;
}

// Stop people dynamically adding properties
public function __set($name, $value) {
throw new \Exception();
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]