Executando verificação de segurança...
1

Dúvida - Aplicação do MVC com Php

Estou a alguns meses estudando desenvolvimento web. Tem sido tudo muito novo para mim, pois meus primeiros passos com a programação foi atráves do Delphi para desenvolvimento de software.

Pois então, ultimamente tenho me dedicando a estudar php e desenvolver alguns projetos com as skills básicas da web. Html, css, js e o php. Já consegui desenvolve alguns projetos bem interessantes. entre eles o ImagenDay que conseme uma API da Nasa e faz posters de forma automatica de imagens do cosmos. Desenvolvi também um CRUD básico e de forma intuitiva, BookSpoiler.

Diante disso decidi estudar e aprender a desenvolver projetos utilizando arquitetura MVC com o PHP e surgiu uma dúvida.
Desenvolver uma aplicação web que tenha uma organização em MVC, porém essa aplicação apenas faz solicitações com a fetch do js ao servidor que tenha scripts php e conectado ao banco de dados. Esse servidor estará organizado com MVC e OOP. Porém, servirá apenas para recebe requisições. Algo parecido e seguindo a mesma linha do que foi feito no BookSpoiler. No qual, as pag eram feita apenas comm html e js puro e utilizava a fetch para realizar as requisições ao servidor php.

Gostária de sabe se essa forma de desenvolvimento é algo válida para projetos. Se é "correto" desenvolve aplicações com arquitetura MVC e OOP organizando e utilizando o Php apenas para recebe requisições.

Abraços a todos vocês!!

Carregando publicação patrocinada...
1

Na programação nao existe "o mais correto", tudo que funciona é válido. Existem sim arquiteturas mais utilizadas e que se tornam um padrão. Por exemplo, no php temos o framework laravel em evidencia, ja no Java o Spring Boot. E assim vai...

Como você citou arquitetura MVC, hoje em dia ela não é tão mais aplicada assim. O que existe hoje é um servidor "backend" que é uma API e um "frontend" que consome essa API. São aplicações distintas.

No php por exemplo, você pode usar laravel para ver essa mágica acontecer. Quer testar? Instale o laravel em sua maquina e crie um projeto padrão deles lá, que ja vem inclusive com autenticação e um frontend qualquer (vue ou react..).

1

Na verdade isso que você está fazendo é criar uma aplicação frontend que consome uma api, ao meu ver não constitui um mvc, pois seu front está desacoplado do restante, mas essa é a minha opinião e não uma verdade absoluta.

Acredito que você esteja fazendo assim para ter reatividade e não ter refresh na página, mas quando você for estudar Laravel e seu ecossistema, você vai descobrir que existe uma ferramenta maravilhosa chamada Livewire que vai fazer tudo isso sem que você tenha que relar em uma linha de js sequer.

O que vejo como 'mais correto' é fazer como os grandes fazem, já padronizaram, tem um controller que comunica diretamente com a view e com o model, sem intermediários. Outra forma de se fazer isso é com o Laravel Inertia, por exemplo, que permite que exista essa funcionalidade entre o controller e um front em react ou vue.

Boa sorte nos estudos.

1

Na verdade isso que você está fazendo é criar uma aplicação frontend que consome uma api, ao meu ver não constitui um mvc, pois seu front está desacoplado do restante, mas essa é a minha opinião e não uma verdade absoluta.

Permita-me discordar, no padrão MVC, o V (View) não se limita apenas à HTML gerado pelo servidor. A visão é a forma de apresentação de conteúdo, que pode ser em formato JSON por exemplo, ou uma saída para uma aplicação CLI (linha de comando), um binário como uma música, vídeo ou imagem... e também permitir a interação com o mundo externo.

A ideia do MVC foi criada na época do SmallTalk para aplicações CLI, a ideia é separar muito bem as reponsabilidades e enviar uma macarronada entre lógica de negócios, orquestração do fluxo do processo e apresentação dos dados. E isso dá para fazer em quase qualquer tipo de aplicação comercial.

O que acontece com a prática atual mais adotada em separar o backend e frontend em dois projetos distintos, não torna o frontend como view do MVC, a view do MVC do backend são os endpoints e os retornos em JSON. Da mesma forma que todo o projeto frontend pode ser tranquilamente um MVC por si só, cada vez mais o frontend tem responsabilidades sobre o negócio sejam de validação, exibição e até mesmo controle de acesso. Ou seja, é totalmente possível você ter um MVC no backend e outro MVC no frontend.