class ProductService
{
// 1. Constructor (dependency injection)
public function __construct(
private CatalogInterface $catalog,
) {}
// 2. Public methods (called by controllers)
public function createProduct(array $data): Product { }
public function updateProduct(Product $product, array $data): Product { }
public function deleteProduct(Product $product): void { }
// 3. Private methods (internal helpers)
private function attachVariants(Product $product, array $variants): void { }
private function validateStock(array $items): void { }
}