And just to double check - is $this->pages ending up correct on the next run through process() ? I know that older versions of PHP (< 5.2) would have issues calling array_shift on an array retrieved via a __get method, because it wouldn't actually modify the underlying array (the return of __get returns by value, not reference, meaning the underlying stored array isn't actually updated).