Ir para conteúdo

Arquivado

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

Luis Paullo

OOP - mvc

Recommended Posts

Salve imaster! então eu to aprendendo esse lance de MVC e os conceitos de OOP. (ta dificil =X)

 

tenho seguinte!

 

bom minha view consiste em incluir os arquivos com HTML..

e passo pra view uma herança da model (seria uma herança sei la =X).. funciona legal!

 

Porem to com impressao que to fazendo muita volta pra pouca coisa.

 

Controller - controller expecifico

//instancio view e model na Controller 
   public function initThis() {

       //associacoes direta   
       $this->model = new modelgalery();

       $viewMan = new viewManager();

//aqui a view recebe uma instancia de MODEL
       $view = new viewGalery($this->model);
       $viewMan->index($view, 'index',$widget);//passo instancia da viewEspefica

   }

Model - model especifica

 public function __construct() {

       $this->mensagem = new responseMsg();        

       $this->entity = new Entity_galery($_POST);
   }
   public function read() {
       $stm = registry::getInstance()->get('AppStmt')
               ->setTable('images')
               ->fetchAll();
       if ($stm) {
           $this->mensagem->setResponse('Leitura feita com sucesso');
       }
       return $stm;
   }

view - especifica

class viewGalery extends viewManager implements viewInterface {

   public $model;
   public function __construct(modelgalery $obj) {
       $this->model = $obj ;
   }
   public function show() {  
      return 'pages/galery.php'; // inclui a pagina HTML especifica 
   }
 }

view manager - reaproveito isso pra todas minhas views.


private $view;

  public function index(viewInterface $view, $index, $values) {

       if (is_array($values) && !empty($values)) {
           extract($values, EXTR_PREFIX_ALL, 'var');
       }

      $this->view = $view; 
      $content = $this->includePage(); //aki passo pra variavel a pagina especifica

       if (file_exists(__DIR__ . DIRECTORY_SEPARATOR . $index . '.php'))
           include (__DIR__ . DIRECTORY_SEPARATOR . $index . '.php'); // aqui inclui a index
       else
           echo '<br />arquivo não Existe!';
   }

     private function includePage(){
           ob_start();
           include ( $this->view->show() );
           $content = ob_get_contents();
           ob_end_clean();

         return $content;

     }

 

Bom dentro da index eu do um echo na variavel $content.. que tem armazenada a pagina especifica que esta sendo manipulada

dentro dessa pagina especifica posso fazer o seguinte..

 

$this->view->model->read(); //leio os dados da model

echo $this->view->model->mensagem->response; // pego as respostas setedas nos metodos sendo executados da model

 

Tudo isso funciona ...

 

a Ideia pra essas associações diretas seria Essa?

 

andei vendo um exemplo de mvc com DP Observer.. so que o conceito ta um pouco obscurecido pra mim ainda =X

 

agradeço desde ja, ajuda de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

1-use os recursos de autoload, vai facilitar muito sua vida

2- pq o model recebe os $_POST se eh o controller q controla (logo e recebe e envia) as requisicoes?

 

include ( $this->view->show() );

se eh show, mostrar, entao nao rece retornar o caminho ou nome de arquivo...

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

autoload nao vem acaso agora ..

 

realmente eu passei o POST no model..

 

mais a controller vai cuida da requisição em si, ele que vai direciona pro model certo e pro metodo certo..

 

mais o POST ali no model e um erro?

 

posso muda o nome de show pra thisPage ,getPage, includePage kkkkkkk...

 

na verdade quem mostra (inclui os HTML)

 $viewMan->index($view, 'index',$widget)

 

qnto ai ideia de:

$this->view->model->read(); //leio os dados da model

 

eu faço a view Herdar toda model, isso e certo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

2- pq o model recebe os $_POST se eh o controller q controla (logo e recebe e envia) as requisicoes?

ha quem diga que essa faz parte da regra do negocio, logo, deve estar no model, pois o controller controla o fluxo

Compartilhar este post


Link para o post
Compartilhar em outros sites

exatamente, o controller controla o fluxo, o $_POST vem direto da view, logo eh o controller q o recebe e nao o model, nao ha conexoes entre o model e o view, se for assim, nao existe controller....basta ler a definicao de MVC...

 

 

mais a controller vai cuida da requisição em si, ele que vai direciona pro model certo e pro metodo certo..

correto

 

mais o POST ali no model e um erro?

correto, basta ver o q disse antes...

 

eu faço a view Herdar toda model, isso e certo?

incorreto, cada um tem seu papel completamente diferente, o model abstrai os dados, os persiste no banco, o view recebe dados do usuario, e manda os dados pro usuario, com o intermedio do controller, q diz ao model q dados receber e obter...

 

posso muda o nome de show pra thisPage ,getPage, includePage kkkkkkk...

 

na verdade quem mostra (inclui os HTML)

$viewMan->index($view, 'index',$widget)

sim, por favor, para sua propria seguranca, vai q um dia você nao documentou sua classe, esquece o q os metoso fazem e institivamente tenta lembrar por seus nomes e troca sua funcao? deu m.erda...entao eh sempre bom dar os nomes do q eles fazem...assim basta meia documentacao...

 

 

documentcao, leia-se, phpdoc...

Compartilhar este post


Link para o post
Compartilhar em outros sites
ha quem diga que essa faz parte da regra do negocio, logo, deve estar no model, pois o controller controla o fluxo

eu penso dessa forma tambem .. vo te que validar os dados vindos do POST, vo validar os dados na controller acho que fica errado, isso e trabalho da model!

 

incorreto, cada um tem seu papel completamente diferente

 

Concordo cada qual tem seu papel. Mais a view tem que conhecer a model! Como vo faze pra listar os dados na view sem pegar isso do model?

 

So model que esta isolado, ele nao conhece nem view nem controller..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo cada qual tem seu papel. Mais a view tem que conhecer a model! Como vo faze pra listar os dados na view sem pegar isso do model?

eh pra isso q existe o controller, so pq ele controla o fluxo, nao significa q seja fluxo de requisicao do browser...

 

So model que esta isolado, ele nao conhece nem view nem controller..

incorreto, o controller se utiliza o model e o view...ele pega os dados do model e joga na view, e recebe os dados do view e joga no model...o model nunca vai conhecer o view, senao nao tem pq existir o controller...

 

 

So model que esta isolado, ele nao conhece nem view nem controller..

incorreto, o controller se utiliza o model e o view...ele pega os dados do model e joga na view, e recebe os dados do view e joga no model...o model nunca vai conhecer o view, senao nao tem pq existir o controller...

 

Mais foi isso que disse.. o MODEL nao conhece ninguem, mais view e controller tem que conhecer Model

 

Esse controller que ta ferrando =X

 

agora to confunso porque li que a VIEW tem que conhecer o MODEL wacko.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cada componente conhece aquilo que precisa conhecer.

 

O Controller conhece a Model e a View porque precisa controlar o fluxo de informações entre eles.

 

Já a Model e a View não se conhecem e nem conhecem o Controller porque não precisam.

 

O Controller buscará por informações com a Model e através da View mostrará ao usuário. Para a View tanto faz de onde vieram os dados, o que ela quer saber é mostrá-los.

 

Uma vez mostrados os dados, ela mesma não interage de volta com o Controller e sim com o browser, o qual através do protocolo HTTP vai informar ao Controller o que o usuário fez.

 

Da mesma forma, a Model não conhece o Controller porque para ela tanto faz saber como os dados persistidos por ela serão utilizados, o que importa pra ela são os dados.

 

incorreto, o controller se utiliza o model e o view...ele pega os dados do model e joga na view, e recebe os dados do view e joga no model...o model nunca vai conhecer o view, senao nao tem pq existir o controller...

Só um complemento.

 

Essa é a mais básica das interações.

 

Na forma mais adequada, o Controller recebe os dados e apenas os informa à View.

 

A View por sua vez monta a Resposta (Response) que é quem, de fato, vai exibir os dados para o usuário, através do output buffering (se necessário) ou um echo simples.

 

O Controller só não faz isso sem a View, porque não é responsabilidade da Response manipular as variáveis de Template, com os dados do Controller.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E tenso =X

 

Entao eu pego dados da model no controller passo pra view...

sendo assim:

$this->view->model->read()

 

isso ta totalmente errado?

 

prq to pegando direto da model e passando pra view renderiza com html..

 

Mais o diagrama de MVC vai contra oque voces dizem

 

a VIEW conhece MODEL ta no diagrama.. Sera que to enganado :wacko:

 

321px-ModelViewControllerDiagram.svg.png

 

Voces tao me falando que a view e isolada. :wacko:

 

MODEL sim, ele nao conhece ninguem..

 

esse ideia de validar dados no controller tambem nao me soa bem.. :upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

E tenso =X

 

Entao eu pego dados da model no controller passo pra view...

sendo assim:

$this->view->model->read()

 

isso ta totalmente errado?

 

prq to pegando direto da model e passando pra view renderiza com html..

 

Mais o diagrama de MVC vai contra oque voces dizem

 

a VIEW conhece MODEL ta no diagrama.. Sera que to enganado :wacko:

 

321px-ModelViewControllerDiagram.svg.png

 

Voces tao me falando que a view e isolada. :wacko:

 

MODEL sim, ele nao conhece ninguem..

 

esse ideia de validar dados no controller tambem nao me soa bem.. :upset:

 

sim a view eh isolada...outra coisa, a validacao pode ser em qq lugar, tanto ja view com javascript quanto no model outro controller, depende da sua aplicacao, eu gosto de colocar as regras de negocio no controller, tem gente q gosta de colcoar no model, ae você valida no model ou controller..

 

PS de onde arrumou este diagrama?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Queria aproveitar o assunto e fazer umas perguntas...

 

A camada model é responsável por interagir com o banco de dados, "criar" as entidades do sistema(Classes) e também sobre regras de negócios ? ela tem essas 3 responsabilidades ?

 

Neste caso, a camada view seria toda a interface de visualização para o usuário (Arquivos HTML e CSS) ?

 

E a camada controller serve apenas como ligação entre essas duas camadas ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Queria aproveitar o assunto e fazer umas perguntas...

 

A camada model é responsável por interagir com o banco de dados, "criar" as entidades do sistema(Classes) e também sobre regras de negócios ? ela tem essas 3 responsabilidades ?

 

Neste caso, a camada view seria toda a interface de visualização para o usuário (Arquivos HTML e CSS) ?

 

E a camada controller serve apenas como ligação entre essas duas camadas ?

sim ás 3 perguntas...

na primeira, sim ela interage com o banco de dados, se ela tem a responsabilidade das regras de negocio, ou tem as entidades cabe a você decidir....

 

eu gosto de deixar as regras de negocio no controlller, a nao ser q seja algo especifico, como uma numeracao especifica de um documento, margem de vendas etc...

 

sobre o model criar a entidade do sistema, da uma lida sobre '5 ties'...

 

Valeu cara, agora sei que to no caminho certo, vo procurar alguns códigos de exemplo em PHP usando MVC, só pra ter uma idéia de como ficaria. Nunca programei PHP, pois atualmente to programando desktop sad.gif, mas estudei bem essa linguagem e futuramente vou passar a programar pra WEB, vamo ve no que da.. biggrin.gif

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites
PS de onde arrumou este diagrama?

 

voce se refere ao termo usado 'diagrama'(acho que nao e certo ne =X), ou a imagem em si =X

 

a imagem peguei de um artigo de MVC que o shini me mostro. :closedeyes:

 

validacoes, entao e a gosto beleza kkkkkkk.. Controller ou model.. vo deixa mais carga pra model..

 

o 'diagrama' mostra que a VIEW conversa com MODEL.. entao ela nao e isolada.. isso ainda ta pingando nas minhas ideias.

 

bom vlw pessoal ainda to com umas duvidas, porem MVC e bem complicado..

vo continua com as leituras.

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.