Olá Gilherme,
Tudo bem?
Normalmente você vai ter os arquivos separados, eventualmente você deverá ter alguma forma de autoload (https://www.php-fig.org/psr/psr-4/) que deve ajuda-lo a usar os arquivos uns dentro dos outros.
É comum ter em um framework um diretório para as views, um para os models e um para os controllers.
Também é comum em sistemas MVC em php você ter um arquivo que serve como ponto de entrada da aplicação, ex. index.php, app.php, bootstrap.php, controller.php, cujo o objetivo muitas vezes é:
- Iniciar o autoload na aplicação.
- Iniciar o container/repositório de dependências e carregar as configurações.
- Rotear a chamada que foi feita para ele para o controller correto, injetando as dependências necessárias.
- Capturar erros para evitar mensagens de debug ou telas em branco aos usuários.
Em alguns casos de alguns frameworks por exemplo o controller pode devolver um objeto para seu invocador, em outros casos já vi implementações em que o controller despacha diretamente a resposta para o cliente.
No caso de devolver ao invocador você pode devolver uma resposta por exemplo, informando a view desejada, o conteúdo, um código HTTP, etc e programar algo para processar esta resposta, desta forma tirando a responsabilidade de montar um header em json por exemplo do controller e passando para a aplicação, deixando o controller responsável apenas pelo processamento.