Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ro.fonseca

[Resolvido] Acessar dinamicamente uma variavel d

Recommended Posts

Sua definição de MVC está um tando equivocada quanto às responsabilidades do Model e do Controller.

Henrique, desculpe, eu tb achava q eu tava equivocado ate ter aulas com um desenvolvedor da petrobras em meu curso na faculdade..

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Para chamar um arquivo de template, já que o autoloader só vai apenas operar sobre instâncias de objetos ainda não definidos.

 

Isso, no caso eu estaria chamando um template, a pergunta é, será que chamar, fazer uma requisição(require) de um view (tipo, um formulario de cadastro, cadastro.phtml por exemplo)dentro de uma classe é normal?? Pois eu fico imaginando que tu irá abrir o view, o arquivo dentro da propria classe... O esquem é esse abaixo:

 

 

A classe cadastro faz uma requisição da view:

class Cadastro extends Controller{
   public $teste;

   public function indexAction(){
       parent::setTitle('Cadastro');
       $this->teste = 'fdf';
       //AQUI CHAMA O VIEW
       $this->view('cadastro', 'cadastro');
   }

   public function testeAction(){
       ...

   }


}

 

È aqui que ele retorna o tal require, só que ele irá fazer esse require dentro da classe Cadastro, não é estranho tu abrir um arquivo dentro da classe não???

class Controller{
   public $title = 'Ofertandos';

   protected function view($nome,$pasta){
if(empty($pasta))
    return require_once(VIEWS . $nome.'.phtml');
else
    return require_once(VIEWS . $pasta.'/'.$nome.'.phtml');
   }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é errado.

 

Veja, em sistemas ainda mais Orientados a Objetos, a última coisa a ser feita numa Action (método da classe de Controller) é uma chamada à:

 

$this -> view -> render( 'template.phtml' );

Sendo render() o nome do método que vai incluir, com include, e não requerer, com require, o template a ser mostrado, presente no contexto do objeto atribuído à propriedade $view, por sua vez definida no contexto da classe do Controller (normalmente numa abstrata, pai de todos os Controllers).

 

O errado nesse fragmento de código, é você ter um método view() DENTRO da classe Controller. Não é responsabilidade dos Controllers, concretos ou o abstrato, fazer algo tão intimamente ligado ao HTML a ser enviado para o usuário.

 

Assim como, depois de muito estudar sobre o assunto, percebi que também NÃO É responsabilidade da classe correspondente à View de ecoar o HTML incluído. Esta deve apenas informar à classe que manipula a Resposta (Response) aquilo que fará parte do output.

 

Não que seja assim tãããão errado a View ecoar o HTML, mas é mais correto que a Response o faça.

 

Infelizmente, quanto à esse último detalhe não tenho ainda muitas informações pra passar. O pouco que sei você pode acompanhar nos meus tópicos na sala de Metodologias de Desenvolvimento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo.

 

A propósito, use o botão Responder Azul ou a Resposta Rápida nas próximas respostas, daí você evitar citar (QUOTE) desnecessáriamente as mensagens anteriores. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites
Henrique, desculpe, eu tb achava q eu tava equivocado ate ter aulas com um desenvolvedor da petrobras em meu curso na faculdade..

Cara, não sei quem é esse desenvolvedor, mas os gurus da área, como Martin Fowler, Trygve Reenskaug (o "inventor" do MVC), etc, etc, etc definem muito bem o que é cada camada.

 

Model: tudo que se diz respeito à regras e lógica de negócio.

Controler: trata as requisições do usuário, como um clique em um botão, em uma GUI, uma requisição HTTP em uma aplicação web.

View: aquilo que é visto pelo usuário, botões, páginas html, etc.

 

Porque a lógica do negócio não deve estar no Controller?

Muito simples. Imagine que você possui uma aplicação desktop e queira transformá-la em uma aplicação web. NADA MUDA NA LÓGICA NEM NAS REGRAS DA APLICAÇÃO.

 

A princípio, você teria quem mexer apenas com a camada Controller e com a camada View.

Mas o que acontece se você tem lógica do negócio espalhada pelo Controller?

Uma hora você vai alterar alguma coisa que também influencia no Model aí lá vai você também querer mexer no Model e isso vira uma reação em cadeia.

 

Então se o cara da petrobras, da apple, do google, de onde for falar que Controller trata da lógica da aplicação, ou ele se confundiu, ou não sabe do que está falando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao releia o seu post, você me perguntou o pq nao pode as regras de negocio ficar no controller, você mesmo respondeu, q elas tem de ficar no model...releia seu post...agora verdade seja dita, nao somos ninguem perto dos caras da petrobras, da google, da apple, nem mesmo da microsoft..., nem eu e nem você....

Compartilhar este post


Link para o post
Compartilhar em outros sites

isto nao esta em mvc...preste bem atencao...o papel do controller eh aplicar a logica do negocio, o model as regras do negocio, o view eh mostrar e receber dados, você esta fazendo o papel do view no controller

 

[...]

 

Você disse isso.

 

Eu te respondi que sua definição estava equivocada.

 

Você falou desse tal cara da petrobras.

 

No post que você está falando

Porque a lógica do negócio não deve estar no Controller?

Muito simples. Imagine que você possui uma aplicação desktop e queira transformá-la em uma aplicação web. NADA MUDA NA LÓGICA NEM NAS REGRAS DA APLICAÇÃO.

Não foi uma pergunta pra você, a intenção era eu mesmo responder.

 

[...] seja dita, nao somos ninguem perto dos caras da petrobras, da google, da apple, nem mesmo da microsoft..., nem eu e nem você....

Se o cara realmente deu essa definição que você falou (tem a chance de você ter entendido errado também), não importa se é o Bill Gates, o Larry Page, o Mark Zuckerberg, ESTÁ ERRADO!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ro.fonseca...regra de negocio sao "leis" que definem como uma empresa trabalha, como seus processos funcionam...logica de negocio seria as regras de negocio aplicadas na programacao, implementadas no sistema...

 

 

@ro.fonseca.

 

outra coisa, uma pergunta que absorv conhecimento e enobrece a alma (afinal programacao eh uma arte ) nao eh pergunta boba...e deve ser feita...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos colocar assim.

 

No contexto do jargão, Regras de Negócio são tudo aquilo que vão pro papel. Lógica de Negócio é tudo aquilo que sai do papel e acaba virando código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos colocar assim.

 

No contexto do jargão, Regras de Negócio são tudo aquilo que vão pro papel. Lógica de Negócio é tudo aquilo que sai do papel e acaba virando código.

beleza, matou a pau a minha dúvida, nunca vou esquecer esse dica... E não é no controller que trata da logica de negocio?? Ou o controle simplesmente repassa os dados recebidos do view e manda pro Model?? Sim eu li o que "Henrique Barcelos" falow, estranhei porque achei q fosse no controller, mas pelo q to percebendo o controller simplesmente repassa a informação, correto isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já assistiu Homens de Preto 2?

 

Sabe aquele ET de vários braços, que fica dentro de uma máquina fumando e jogando as cartas nas caixinhas na parede, na Agência dos Correios? Pensa no Controller como esse cara.

 

As milhares de cartas são os dados com que ele vai trabalhar.

 

Ele pega a informação e direciona pro cara responsável. Esse cara faz o que deve fazer e retorna alguma coisa. O Controller pega essa nova informação e faz outra coisa.

 

Ele literalmente controla o fluxo de informações (daí o termo Controller).

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom exemplo! E a validação e tratamento dos dados? ficam no model ou controller? Presumo que seja no model, correto? Já que o controller aparentemente só repassa as informações...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom exemplo! E a validação e tratamento dos dados? ficam no model ou controller? Presumo que seja no model, correto? Já que o controller aparentemente só repassa as informações...

 

Exato, cara .. pensa só no seguinte, o controller é o intermédio entre Model e View .. eles só as chamam pra conversar ..

 

Controller: e aí model, recebi um nome para fazer uma busca ?

Model: certo, deixe me ver ..

Model-Conversando-Sozinho: nome é válido, e não está nulo ..

Model-Conversando-Sozinho: Acessando o banco de dados , e executando uma busca pelo nome

Model-Conversando-Sozinho: Busca realizada, emitindo resultados

Model: ok, aqui estão os dados ( return ... )

Controller: olá view, tenho uma informação para ser mostrada

View: ok, exibindo esta informação ( Controller: $this->view->displayAccountInformation ( $information ) )

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.