php - Controller precisa ser uma class? - Stack Overflow em Português
Os controllers dentro de um MVC, precisam ser classes? Pois pelo que estou vendo aqui, a única função deles é pegar as informações que o view ta pedindo, jogar pro model "resolver o problema" e quando estiver com problema resolvido, ele pega a solução pronta e manda pro view de novo... É mesmo necessário ele ser uma classe?
editada 20/12/17 às 11:38
@LucasCarvalho experiência pessoal (ok, são só pouco mais de 15 anos mexendo com PHP, talvez não seja muito) - PHP sem MVC e sem OOP é muito mais simples e fácil de manter. Afinal, não é linguagem de programação, e sim uma mera coleção de scripts de vida curta ao longo da execução da aplicação. Não vejo sentido em querer imitar estruturas complexas que fazem sentido em coisas monolíticas (quando fazem), como executáveis. Tratar o PHP como PHP facilita a vida. Um bom exemplo disso são as "rotas" tradicionais: quase nunca são necessárias numa aplicação bem pensada. – Bacco♦ 20/12/17 às 1:30
Uma coleção de scripts bem feitos é fantástico sim. E eu uso PHP no meu dia a dia. Não preciso "enfeitar" o PHP e folhear a ouro pra isso. Eu não ficaria ofendido se você me dissesse que minha chave de fenda é só uma chave de fenda. Afinal, é pra isso que ela foi criada. Não vou usar meu soprador de SMD pra tirar um parafuso. Não vejo razão pra ofensa em por cada coisa em seu lugar. Mas quando o pessoal não entende o que eu falo sobre linguagens de script, eu costumo perguntar "qual é o loop principal do seu programa em PHP?", para clarear um pouco a diferença. Ser script não é detrimento :) – Bacco♦ 20/12/17 às 1:58
@LucasCarvalho não relacionado ao assunto específico, mas vale lembrar que você já tem pontos para participar do chat da rede se quiser. Em especial, a sala "estouro de pilha" chat.stackexchange.com/rooms/11910 que é onde o pessoal do SOpt costuma ficar (durante o exoediente costuma ter movimento lá). – Bacco♦ 20/12/17 às 2:06
...fundamento. E o que o @Bacco está dizendo tem fundamento. Existe vasta gama de informação, até mesmo aqui no site que comprovam tudo o que ele disse. PHP pode fazer coisas fantásticas, ainda que eu discorde dos seus exemplos como fantásticas (todos os profissionais experientes - qualitativamente e não quantitativamente - que eu conheço não as consideram fantásticas, são coisas úteis, mas o produto no geral muito mal construído). Suas opiniões foram publicadas, legal. Mas fora o que eu já disse elas não se sustentam. Sua formação estará completa quando entender tudo o que eu estou falando... – Maniero♦ 20/12/17 às 9:44
porque todo mundo começa sem ser profissional. Só uma última coisa: nunca conheci um programador iniciante que soubesse fazer OOP certo. Bem poucas pessoas experientes fazem OOP certo. OOP é muito difícil. O que o Bacco falou é muito mais fácil. OOP tem suas vantagens, mas só se fizer certo, no local certo. Eu falo disso no site o tempo todo, mas poucos leem. Claro que se pegar uma receita de bolo OOP e fizer igual pode ficar bom, mas a mínima alteração que faça naquilo já pode desmoronar tudo, e é o que acontece. E isto não é programar. Funcionar não é a mesma coisa que estar certo. – Maniero♦ 20/12/17 às 9:48
Até onde eu sei, tecnicamente não tem que ser, mas a maneira como todo mundo implementa é através de uma classe.
Se fizer de outra forma pode até ser melhor, pode estar inovando de certa forma, indo contra a maré de uma forma positiva. Mas pode fazer tudo errado por não ter experiência com aquilo e por não ter nada nada que já foi testando e validado por outras pessoas para "copiar". Pode ser um tiro no escuro... e pode compensar :)
Mas se usar classe para todo o resto e no controller não, aí acho estranho.
Sua compreensão do padrão está correto, implementá-lo corretamente é mais importante.
Se for inovar no controller talvez não precise do MVC. De fato há uma corrente já questionando o seu uso, e não falo de um ou outro outsider como eu, de fato já existem formas mais adequadas para muitos cenários.