Hi Guys

I've been developing my own CMS in PHP for over a year and it's getting to the stage where I need some advice.

I'm pretty much all self taught when it comes to PHP, but having a background other programming languages helped.

However, I'm quite sure, being self taught, I've got a smattering of bad practices and habbits.

So here's a quick summary of the CMS so far...

All of it based off a series of Class files, which inherit base functions and their database connection from a single "Main" class.

This main class has a "config" file included within it, which contains definitions for the DB username password etc.

so

Code:
require_once "class.main.php";

Class User extends Main {

    function __construct() {

	 parent::__construct();		

   }

}
These classes can then be included in my fronted pages to utilize their features

Pretty standard so far right?

The issue I'm now having is that I need some of these classes to reference other classes internally... A current case is that I need the "Catalogue" class to use methods from my "Categories" class

So my products class file looks like:

Code:
require_once "class.main.php";
require_once "class.category.php";


class Catalogue extends Main{
    parent::__construct();
   $this->category_obj = new Category();
}

This to me just seems like a bad way of doing it? Having to "require_once" a class like that?

I've been looking into namespaces as a potential solution to the problem, I understand how they work to a degree but I can't quite clearly see how I can incorporate them into my current architecture. I'm basically just looking for some advice and guidance on how to properly optimize and structure my code.

Thanks in advance guys!