Pergunta

Estou planejando um aplicativo da web. Estou usando a estrutura PHP Kohana com Smarty. Meu aplicativo da Web também terá interface de dispositivo móvel. Agora, haverá muitos código comuns e muitos separados para as duas interfaces.

Como devo organizar o código para que:

  1. Não há duplicação de código.
  2. O código desnecessário não é carregado. Por exemplo, o código específico da interface do usuário da área de trabalho não deve ser carregado na interface do iPhone ou vice -versa.
Foi útil?

Solução 3

Finalmente, segui a abordagem de diferentes rota do projeto 2. Porque deu muita flexibilidade. Se eu quiser compartilhar alguns modelos, visualizações, controladores, os coloquei em "módulos". Caso contrário, se eu quiser ter algo separado para duas interfaces, eu as coloquei no projeto correspondente.

Então: minha fonte se parece:

</>
  proj_desktop/
    htdocs/
    application/
      models/
      views/
      controllers/
  proj_iphone/
    htdocs/
    application/
      models/
      views/
      controllers/
  proj_mobile/
    htdocs/
    application/
      models/
      views/
      controllers/
  modules/
    myApp/
      models/
      views/
      controllers/
  system/
    models/
    views/
    controllers/

Outras dicas

Você tem várias opções realmente!

Você pode optar por seguir a rota do "2 Projeto" usando módulos Kohana compartilhados - mas eu pessoalmente não gosto da abordagem.

Pessoalmente, eu usaria uma abordagem semelhante a um site multi -lingual.

Supondo que você esteja usando Kohana3 - a rota padrão pode ser alterada para algo como:

Route::set('messages', '<format>/(<controller>(/<action>(/<id>)', array('format' => '(mobile|desktop))
->defaults(array(
 'format'     => 'desktop',
 'controller' => 'welcome',
 'action'     => 'index',
));

Então - os usuários nunca verão os / URLs móveis, mas agora você pode escolher qual modelo Smarty com base no request :: instance () -> param ('formato');

Provavelmente - você só precisará duplicar os modelos de exibição de arquivos/smarty para cada plataforma.

Eu uso um padrão semelhante para formatos de saída ... xml, json, xhtml, rss ..

Espero que isto ajude ;)

Uma maneira seria simplesmente usar vistas separadas para navegadores de mesa e navegadores móveis. Toda a sua lógica estará no seu controlador para que você não duplique o código, basta chamar a visualização relevante com base na sequência de agentes do usuário do navegador.

Definitivamente, sugiro ter visualizações separadas para displays móveis e desktop. Se possível, não vincule diretamente a visualização à string de agente de usuário-use a string de agente de usuário para direcionar dispositivos móveis para um URL separado (como M.Whathe /m/página) que se renderiza separadamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top