Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
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?
>
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
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...
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..
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 /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/wacko.gif&key=e57c44fce5198c89d762cf713c3cc137fe9d09cf45231c06dfe42e453ccea546" alt="wacko.gif" />
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.
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:
/applications/core/interface/imageproxy/imageproxy.php?img=http://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/ModelViewControllerDiagram.svg/321px-ModelViewControllerDiagram.svg.png&key=91ab35c3137e538cd008e864b080b368e208c812f9fb76cde38072a688b04bea" alt="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:
>
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:
/applications/core/interface/imageproxy/imageproxy.php?img=http://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/ModelViewControllerDiagram.svg/321px-ModelViewControllerDiagram.svg.png&key=91ab35c3137e538cd008e864b080b368e208c812f9fb76cde38072a688b04bea" alt="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?
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 ?
>
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 /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/sad.gif&key=02b1574f7da1e723d8a7dbae07272745fb341b432c19ce24d0490ce410222838" alt="sad.gif" />, mas estudei bem essa linguagem e futuramente vou passar a programar pra WEB, vamo ve no que da.. /applications/core/interface/imageproxy/imageproxy.php?img=http://forum.imasters.com.br/public/style_emoticons/default/biggrin.gif&key=cb0fdb2382312b39ddcb15831fcae62157015f17d2417528782628663387e929" alt="biggrin.gif" />
Vlw
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.
1-use os recursos de autoload, vai facilitar muito sua vida
se eh show, mostrar, entao nao rece retornar o caminho ou nome de arquivo...