For it to work (to interface) both Countable and ArrayAccess are not necessary. Smells again as implementation specific but for standardizing, the distinct, named methods with their parameters are needed only. So it's perhaps well to ask "why try"?