AndrePls 6 Denunciar post Postado Dezembro 17, 2013 Estou fazendo um mini-framework PHP MVC acompanhando umas vídeo aulas, porém ainda continuo com algumas dúvidas: oque colocar no controller e oq colocar no model exemplo, se eu tenho um sistema de noticias aonde eu posso ADICIONAR/EDITAR/ELETAR/LISTAR os dados oque eu colocaria no model? e no controller? Compartilhar este post Link para o post Compartilhar em outros sites
raonibs 64 Denunciar post Postado Dezembro 17, 2013 O model é que faz o trabalho, o controlller geralmente apenas instancia e passa objetos de um para o outro, mas não contem nenhuma lógica em si. Ex.: class Controller { public function fomularioContato() { $form = new FomularioContatoModel(); $view = New FormView($form); } } No controller acima cada método monta uma página do site, no método implementado temos um Fomulário de contato. Note que o controller apenas faz a ligação da camada model com a camada view. Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Dezembro 17, 2013 #1, numa analogia a um carro, o controller é o motor. o motorista é o model. Compartilhar este post Link para o post Compartilhar em outros sites
AndrePls 6 Denunciar post Postado Dezembro 17, 2013 ainda n entendi. Compartilhar este post Link para o post Compartilhar em outros sites
raonibs 64 Denunciar post Postado Dezembro 17, 2013 O MVC tem como objeto ajudar o desacoplamento das partes do sistema. Em teoria, por exemplo, você pode alterar toda a camada view sem modificar uma linha da sua camada model. Nos temos o Model que é parte que faz o trabalho duro e View responsável pela apresentação na tela, o controller é a camada intermediaria entre eles. Simplificando de maneira tosca: A classe model faz um calculo e a view da o "echo" no resultado. Você precisa entender alguns conceitos antes de partir para o estudo do MVC: Saber usar e criar classes, entender poliformismo, desacoplamento, injeção de dependência. Estudar os princípios Solid como o de responsabilidade unica. Esses conhecimentos vão lhe fornecer uma boa base para o entendimento do MVC, se você não os domina volte um pouco seus estudos para eles que mais tarde MVC vai se tornar mais claro. Compartilhar este post Link para o post Compartilhar em outros sites
AndrePls 6 Denunciar post Postado Dezembro 17, 2013 Cara, eu sei usar classes, agora se tu n vai ajudar, nem vem no tópico. alguém? Compartilhar este post Link para o post Compartilhar em outros sites
raonibs 64 Denunciar post Postado Dezembro 17, 2013 Andre, não se ofenda. Usei o "se você não os domina" justamente por não saber o seu nível de conhecimento. Estou tentando colaborar com você. Entenda tudo que eu escrevo como em "tom tranquilo e sereno". Compartilhar este post Link para o post Compartilhar em outros sites
Jonaslhp 39 Denunciar post Postado Dezembro 17, 2013 Coloque no Model tudo o que for relacionado à suas regras de negócio e persistência. Por exemplo, se estiver trabalhando com banco de dados, adicione suas rotinas CRUD no Model: <?php class NewsModel { private $pdo; public function __construct( PDO $pdo ) { $this->pdo = $pdo; } public function create( News $news ) { $stmt = $pdo->prepare('INSERT INTO `news` (`title`, `description`, `created_at`) VALUES (:title, :description, NOW());'); $stmt->bindParam( ':title', $news->getTitle(), PDO::PARAM_STR ); $stmt->bindParam( ':description', $news->getDescription(), PDO::PARAM_STR ); return $stmt->execute(); } public function read( News $news ) { $stmt = $pdo->prepare('SELECT * FROM `news` WHERE `id` = :id;'); $stmt->bindParam( ':id', $news->getId(), PDO::PARAM_INT ); if ( $stmt->execute() ) return $stmt->fetchAll(); else return false; } public function update( News $news ) { $stmt = $pdo->prepare('UPDATE `news` SET `title` = :title, `description` = :description, `updated_at` = NOW()) WHERE `id` = :id;'); $stmt->bindParam( ':title', $news->getTitle(), PDO::PARAM_STR ); $stmt->bindParam( ':description', $news->getDescription(), PDO::PARAM_STR ); $stmt->bindParam( ':id', $news->getDescription(), PDO::PARAM_INT ); return $stmt->execute(); } public function delete( News $news ) { $stmt = $pdo->prepare('DELETE FROM `news` WHERE `id` = :id;'); $stmt->bindParam( ':title', $news->getTitle(), PDO::PARAM_STR ); $stmt->bindParam( ':description', $news->getDescription(), PDO::PARAM_STR ); $stmt->bindParam( ':id', $news->getDescription(), PDO::PARAM_INT ); return $stmt->execute(); } } Acredito que você deva fazer as validações do tipo 'Título não pode ser em branco' na Model, no próprio código acima, ou criar uma nova 'camada', validando os dados antes e depois persistindo no banco de dados. No controller, a única coisa que você vai fazer é verificar se uma requisição HTTP é do tipo POST quando tem que ser POST, se os dados de um formulário foram enviados vazios etc, além de fazer a comunição com a Model e a View. Você intercepta a requisição do usuário, instancia a model correta, recupera os dados necessários e instancia a view correta para a requisição do usuário, imagino que seja isso... Também estou estudando e aprendendo... Cara, eu sei usar classes, agora se tu n vai ajudar, nem vem no tópico. Acho que não foi nesse sentido que ele falou, eu apreciei a dica dele...Tente não ser tão deselegante com quem quer te ajudar e te faz críticas construtivas... Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Dezembro 17, 2013 Se você diz "saber usar classe", então não sabe OOP. Há muitos, mas MUITOS fatores além de simples classes falando em OOP. Existe o fator de responsabilidade, desacoplamento, coesão, estado, etc. Não seja arrogante a ponto de dispensar ajuda. O fórum é um lugar para compartilhar conteúdo. Compartilhar este post Link para o post Compartilhar em outros sites
AndrePls 6 Denunciar post Postado Dezembro 17, 2013 eu sei o quanto de conhecimento eu possuo, não preciso de ajuda para determinar oq eu sei ou não. Compartilhar este post Link para o post Compartilhar em outros sites
Enrico Pereira 299 Denunciar post Postado Dezembro 17, 2013 Ninguém quer medir conhecimento aqui. O usuário que quis ajudar apenas ajudou, dando conselhos. Se não quiser ser ajudado, nenhum problema. Compartilhar este post Link para o post Compartilhar em outros sites
Henrique Barcelos 290 Denunciar post Postado Dezembro 18, 2013 Cara, eu sei usar classes, agora se tu n vai ajudar, nem vem no tópico. Putz, sério que a essa altura do campeonato tenho que ver neguim que ACHA que manja dos paranauê dar piti aqui porque alguém tentou ajudar? Kiança, OOP é MUITO MAIS do que simplesmente declarar uma classe aqui, outra ali. MVC é um padrão ARQUITETURAL, que exige um poder de abstração muito grande, uma compreensão completa dos princípios SOLID, que você OBVIAMENTE não tem. Humildade é a chave sempre, champs. :natalwink: Compartilhar este post Link para o post Compartilhar em outros sites