I’ve done mostly procedural programming for years and am trying to wrap my head around OOP and PDO. I’ve started converting an application I’ve written to using classes instead of standalone functions (it’s a nightmare, but I think it will be worth it..) and would like to use PDO instead of the regular mysql_* functions. I’m kind of flying by the seat of my pants, just learning as I go along, and I’m not sure how I should handle the PDO object(s).
I know it would be stupid to create a new PDO object every time I need to make a query, so that leaves two ways that I can see:
- Creating a PDO object in each class (i.e. every time an object is created, call a member function to create a PDO for it to use).
- Create PDO object at the beginning of my application and pass it to the constructor of every object that is created, and all the objects share the PDO object.
What is the best way to do this?
Thanks for your advice!
Don’t make more than one. You’ll go crazy trying to manage all the DB connections.
One good solution would to make a singleton object for data access and retrieve it via it’s static accessor method whenever you want to use the DB. That way you only ever have one place that manages DB access and PDOs. If you want to be a bit more MVC about it, you can put all SQL code in there too.