I'm pretty new to OOP and been programming in it successfully in terms of getting things to work but I have found I keep running into a similar problem and am not sure what to 'Google query' to get answers.

Basically I have 3 classes, projects, clients, people. I run into the issue of what is the best way to access each from each other.

For instance, I want to grab all projects based on the current client and there are a couple of ways I have thought of how to do this but do not know the 'best' way to do it.

1: have a method in the client class that grabs all the project info, store a multi-dimensional array, foreach said array to extract data
2: have a method in the client class that creates multiple project objects and store in an array to do a foreach on
3: create a new object using the project class and pass the client id to it

Advantages/Disadvantages (that I can think of)
1: (probably the worst idea) creates possibility of multiple methods in multiple classes that do almost/same thing however leaves all the projects in the client object
2: same as above but keeps everything more object oriented
3: seems like the right choice but now there's no 'easy way' to connect the projects to the client (for instance if I have n number of clients i can no longer just do $client->projects->name (I know I could do ${'clients'.$x} and ${'projects'.x} but that seems un-needed, like I'm missing an important step/concept of oop).

Any thoughts, opinions, insights from anyone? Any help is greatly appreciated.