This is something I don't think you should optimize until it becomes a bottle neck.
It is much cleaner if you split it up. In fact, I would even recommend that you create another folder and call it collections for example. In there you have for example a UserCollection that allows you to iterate over different sets of users. With the current() method you then return a user object.
For the getUser() part, I would put things like a user object into a folder called entities. Those objects handle the CRUD operations of a single user while the collections are there to return sets of users (or a single user).
In the entity part you can throw an exception if something is not found. The collection should only return valid IDs.
As a sidenote, you can also mix different objects in your collection when you use iterators, this can be pretty useful in some cases.