title: OOP object models, best practice
body: <p>I have a very specific issue in mind, regarding on how to implement data models using instantiable classes. For example, let's say I have a list of cars in my database, and somewhere in my code I will have both the need to load a specific car, and to load all of the cars. </p>
  
  <p>Does it make more sense to create a class <code>Cars</code> where <code>$cars = new Cars;</code> would return all cars, and when I need a specific car, I would call a static method <code>Cars::getCar($id)</code>? </p>
  
  <p>Or vice-versa, have a class <code>Car</code> where <code>$car = new Car($id)</code> would return a specific car, and when I need all of them, I would call a static method <code>Car::getAll()</code>? </p>
  
  <p>In both these cases, these static methods would in this case return simple arrays? </p>
  
  <p>Would it make more sense (but it seems very impractical) to have both an instantiable class <code>Car</code> and an instantiable class <code>Cars</code>? </p>
  
  <p>Is there yet another, ultimately better way? </p>