// why not like this // constructor just takes data from product table $product = new Product(934); // now i get category ID $catId = $product->getCategoryId(); // and instantiate a category class to get category name $category = new ProductCategory($catId); $catName = $category->getName(); /** ------------- **/ // while some people advise this: $product = new Product(882); // constructor takes all data from all related tables // and this method simply gets the category name $catName = $product->getCategoryName(); // why have the ProductCategory class then ?? // .....