Estou utilizando (aprendi) corretamente o padrão MVC?

,

Olá. Há alguns anos na faculdade tive uma aula prática de padrões com PhP, e uma delas foi o MVC. Aprendi com meu professor o padrão MVC, mas não sei até hoje o mesmo foi ensinado da maneira correta. Sempre que vejo projetos com padrões MVC estão um pouco diferentes do meu, na verdade, a classe Controller parece não fazer muito sentido no que eu aprendi.
Gostaria que dessem uma olhada na forma que eu programo em MVC e dizer se estou fazendo da maneira correta ou se teria como melhorar, pois realmente estou perdido, principalmente na parte da Controller e da Model.

Na Model:

class ModelProduto{
private $id;
private $descricao;
private $valor;

public __construct(){
// nada por aqui no momento…
}

protected function inserirProduto($produto){
// realiza conexão com o banco
// executa query no banco passando valores $produto->id, $produto->descricao, $produto->valor

  // retorna boolean se foi inserido com sucesso no banco ou nao
  return $resultado;

}

protected function buscarTodosProdutos(){
// realiza conexão com o banco
// traz os registros e armazenam em algum lugar, no caso, num array
$produtos = new Array();
foreach(resultado in lista){
$produto = new Produto();
$produto->id = resultado[‘id’];
$produto->descricao = resultado[‘descricao’];
$produto->valor = resultado[‘valor’];
$produtos[] = $produto;
}
return $produtos;
}

// metodos Get e metodos Set em visibilidade public…
}

Feito isso, na Controller que é onde eu tenho mais dúvida, aprendi a estruturá-la da seguinte forma:

class Produto extends ModelProduto{

// as vezes aqui um método ou outro (geralmente static) para montar um objeto ou fazer algo extra
// sempre tenho a função de montar objetos para ser usada mais tarde
public static criaObj($descricao, $valor){
$produto = new Produto();
$produto->setDescricao($descricao);
$produto->setValor($valor);
return $produto;
}

public function inserirProduto($produto){
return parent::inserirProduto()
}

public function buscarTodosProdutos(){
return parent::buscarTodosProdutos()
}
}

Uma vez estruturado este MVC, na View, caso eu tenha um formulário para cadastrar este produto, ou exibí-lo, eu faço o seguinte:

<html>
<header></header>
<body>
<form method=“POST” action=“manipulaProduto.php”>
<!-- formulário aqui -->
</form>
</body>
</html>

Consequentemente eu crio outro arquivo em outra pasta chamado manipula, onde eu verifico os dados dos formulários e mando pra controller, mais ou menos assim:

if(isset($_POST[‘formularioEnviado’])){

inserir();
}

function inserir(){

//crio variaveis para pgar os $_POST e validar os campos,
//verificar se não existem nulos, poucos caracteres etc

$validado = validarCampos();

if($validado){
// se passar pelas validações, chamo o inserir do Controller
$inserido = inserirProduto();

  if($inserido){
  	// envio alguma modal para a view informando que tudo foi validado com sucesso e demais eventos se necessário
  	return $inserido;
  }

}

// envio alguma modal para a view informando erro no formulario se não entrar no if
return $erros;

}

function validarCampos(){

// valida os campos e retorna para a função acima
}

function inserirProduto(){

// chamo o Controller e crio um objeto
$produto = Produto->criaObj($_POST[“descricao”], $_POST[“valor”])
$resposta = $produto->inserirProduto($produto);
return $resposta;
}

Esse é o padrão que eu utilizo em meus projeto. Não foi tudo que aprendi na faculdade, a maior parte eu desenvolvi minha maneira própria de programar, mas a questão é o padrão MVC. As vezes acho que esse manipulaProduto.php faz o papel que o Controller deveria fazer, pois o controller nada mais faz que transferir uma função para a Model, o que chega a ser quase inutil ao meu ver.
Podem me dizer como anda essa minha estrutura, se algo poderia ser melhorado ou se o padrão MVC está realmente errado? Lembrando que essa estrutura que criei aqui para apresentar meu problema é algo extremamente resumido e não cheguei a rodar os códigos, mas esta é a forma que programo atualmente.
Obrigado!