Ir para o conteúdo
xploit

Criar estrutura MVC

Mensagens Recomendadas

xploit    3
xploit

Eu venho a algum tempo a programar as minhas estruturas de projectos php em forma de componentes, à base de classes chama classe, e recentemente estou a estudar a arquitectura MVC.

Já percebi o conceito MVC não sou expert obviamente por me estar a iniciar mas já captei a essência do padrão, agora pretendo criar uma estrutura MVC para todos os meus projectos, terá que ser uma estrutura genérica e de base para qualquer projecto que eu desenvolva, mas estou com alguns problemas de lógica de como vou projectar isto.

Vou tentar ser mais claro, por exemplo tenho um cliente que me pede para fazer um site com plugins, quero já pegar na minha estrutura base e montar lhe o sistema, eu gosto muito da ideia e do conceito de plugins, mas não sei como vou estruturar, existe também os hooks que também não sei como projectar dentro de um padrão MVC, portanto básicamente queria que me dessem ideias ou mesmo exemplos bastante simplistas de como fazer uma estrutura MVC base para projectos que possam vir ter que levar com plugins e/ou hooks.

Agora aqui poderiamos entrar no campo das frameworks, vocês poderiam me dizer "Saca a Zend Framework e põe te a estudar a documentação", realmente assim até que seria possível, mas estaria 100% dependente de uma framework que nem sequer sei 80% das suas funções, e teria que seguir lógicas de os desenvolvedores da mesma e eu simplesmente não quero isto, não sou contra frameworks, mas tudo o que diz respeito ao real CORE de um projecto gosto que seja 100% da minha autoria, no que diz respeito ao template ai sim já utilizo o famoso smarty, mas se ele não existisse saberia criar um parecido com a mesma filosofia.

Pronto básicamente é isto, ideias opiniões ou exemplos são bem vindos.

Desde já obrigado pela ajuda ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
yoda    139
yoda

No paradigma MVC existe um sistema padrão e existe, caso pretendas, módulos (vou usar este nome) a partir dessa base, que basicamente funcionam com o mesmo paradigma, só muda a sua localização.

Exemplo :

- application
  - classes
    - model
    - view
    - controller
- modules
  - database
    - classes
      - model
      - view
      - controller
  - auth
    - classes
      - model
      - view
      - controller

Isto não é uma visão generalista do MVC (que neste caso é HMVC), mas foi a estrutura que mais me fez sentido depois de experimentar várias perspectivas sobre o assunto ao longo dos anos. O HMVC é igual ao MVC excepto que existe uma hierarquia (Hierarquical Model View Controller). Para dar um exemplo do funcionamento, se tiveres um Model em Application com o nome User, e outro no módulo Authentication com o mesmo nome, aquele que estiver em Application vai sobrepor-se ao anterior, desde que indiques nas funções Core responsáveis pelo, suponho, autoloading qual a hierarquia que pretendes.

Normalmente segue-se esta lógica (ordenado por importância):

Application

Module

System

Neste exemplo, sempre que executas ..

$user =  User::factory(1);

.. o core vai procurar em primeiro lugar pela classe seguindo a hierarquia acima. Isto anula a necessidade de Hooks.

É uma perspectiva sobre o assunto. Eu prefiro pensar em classes que executam funções básicas e toda a camada de negócio (que tem directamente a ver com cada cliente em específico) é programada à mão. Existem sempre funções similares, como a autênticação de utilizadores, pelo que facilmente com este esquema crias aquilo que consideras básico / comum em modules/auth/classes e, caso necessites de algo especifico para um projecto, basta copiar e alterar essas classes em application/classes para que estas sejam usadas em vez das originais.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
taviroquai    61
taviroquai

@xploit

Eu também estou à procura de uma "coisa" dessas...

O sistema de plugins, tal como conheço, é baseado em eventos (padrão observer) e é diferente de MVC. São dois padrões diferentes.

Eu tenho uma estrutura onde uso os dois padrões... basicamente podes aplicar o padrão observer em qualquer classe Model, Controller e View. Depois algo (a classe do sistema, ou uma classe que faça load dos plugins) irá registar os plugins a usar.

É sempre bom ouvir outras ideias ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade