PHPの通常の配列は何でも投入できる。
同じ型の要素だけが含まれる配列であると保証したい場合、setterで制限を掛けるとよい。
ArrayObjectをextendsするのが楽。
<?php
// intだけに制限する
class IntArray extends ArrayObject
{
function offsetSet($offset, $value) {
if (is_int($value)) {
return parent::offsetSet($offset, $value);
}
throw new InvalidArgumentException;
}
}
// Hogeクラスのインスタンスだけに制限する
class HogeArray extends ArrayObject
{
function offsetSet($offset, $value) {
if ($value instanceof Hoge) {
return parent::offsetSet($offset, $value);
}
throw new InvalidArgumentException;
}
}
ちょっとかっちりしたクラスになる。