Ir para conteúdo

Arquivado

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

Mateus Silva

Arquitetura de Software

Recommended Posts

Estou iniciando um projeto que vai ser grande (bem grande) e terá constantes atualizações com novos módulos e manutenção nos já existentes!

Minha principal dúvida é: qual arquitetura utilizar ? Pela minha necessidade me veio à cabeça o MVC e, se eu usar MVC, alguém poderia me mostrar um exemplo de uma boa organização dos diretórios neste modelo ? Pois já achei vários na internet e eu mesmo já usei de umas 2 formas diferentes, enfim, me deem uma luz!

PS. O sistemas vai ser criado do zero sem utilização de frameworks.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Mateus, beleza ? Bom, não sei o que você chama de projeto grande, mais ai vai uma sugestão de estrutura MVC comum e breve para se ter um "norte", adapte às suas necessidades.

 

mvc.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites
18 horas atrás, Mateus Silva disse:

se eu usar MVC, alguém poderia me mostrar um exemplo de uma boa organização dos diretórios neste modelo ?

Uma boa organização já está presente nos próprios frameworks de ponta, tipo Laravael, Sinfony e Zend

https://github.com/laravel/laravel

Desenvolver uma aplicação, que pode vir a ser grande, sem o uso de Frameworks é no minimo insano para os dias de hoje.
 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 07/02/2017 at 00:42, Alaerte Gabriel disse:

Fala Mateus, beleza ? Bom, não sei o que você chama de projeto grande, mais ai vai uma sugestão de estrutura MVC comum e breve para se ter um "norte", adapte às suas necessidades.

 

mvc.jpg

 

Legal, tinha pensado em algo simples assim mesmo.

 

Em 07/02/2017 at 18:41, Williams Duarte disse:

Uma boa organização já está presente nos próprios frameworks de ponta, tipo Laravael, Sinfony e Zend

https://github.com/laravel/laravel

Desenvolver uma aplicação, que pode vir a ser grande, sem o uso de Frameworks é no minimo insano para os dias de hoje.
 

 

Nunca tive muito interesse em usar frameworks, até estudei alguns como o próprio Laravel e o Cake, mas ainda assim, eu gosto de ter 100% das minhas aplicações na mão, poder criar o que quiser da forma que quiser sem muita restrição, por isso não sou muito adepto de usar frameworks, mas agradeço pelo toque, vou reconsiderar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma coisa é programar por Hobby e fazer alguns freelas, a outra é escalar um projeto, onde este demandara por profissionais qualificados mais a frente. Frameworks a grande vantagem é a agilidade no desenvolvimento e documentação extensa. 

 

Se uma empresa/aplicação cresce, pode ter certeza, os que vier a trabalhar na aplicação não pensaram igual a você, "gosto de desenvolver do zero", é você quem tem que se adequar ao mercado, e não ao mercado a você. 
 

Alguns frameworks tem suas limitações e o cake é um deles, este força a  usar suas convenções e não te ajudara a escalar o projeto. 

 

Não estou puxando sardinha pro Laravel, mas não vejo nenhuma limitação nesta obra de arte, principalmente em escalar qualquer projeto. 
"O que mais vejo em grupos é a limitação do próprio desenvolvedor", pois pulam etapas básicas e vai direto para o framework. 

 

:thumbsup:



 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 07/02/2017 at 00:13, Mateus Silva disse:

se eu usar MVC, alguém poderia me mostrar um exemplo de uma boa organização dos diretórios neste modelo ?

 

Por que raios você está preocupado com diretórios? MVC não tem absolutamente nada a ver com diretórios. Não importa a arquitetura que você vá utilizar; siga as PSR; a PSR-4 diz respeito ao autoloader: http://www.php-fig.org/psr/psr-4/

 

Em 07/02/2017 at 00:13, Mateus Silva disse:

Estou iniciando um projeto que vai ser grande (bem grande) e terá constantes atualizações com novos módulos e manutenção nos já existentes!

 

Grande é relativo; grande comparado a quê? A sugestão de trabalhar com DDD é interessante; tente visualizar cada um dos contextos da aplicação e trabalhá-los individualmente; isso evita que você se perca num emaranhado de coias.

 

Em 07/02/2017 at 00:13, Mateus Silva disse:

PS. O sistemas vai ser criado do zero sem utilização de frameworks.

 

Por quê?

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Williams Duarte disse:

Uma coisa é programar por Hobby e fazer alguns freelas, a outra é escalar um projeto, onde este demandara por profissionais qualificados mais a frente. Frameworks a grande vantagem é a agilidade no desenvolvimento e documentação extensa. 

 

Se uma empresa/aplicação cresce, pode ter certeza, os que vier a trabalhar na aplicação não pensaram igual a você, "gosto de desenvolver do zero", é você quem tem que se adequar ao mercado, e não ao mercado a você. 
 

Alguns frameworks tem suas limitações e o cake é um deles, este força a  usar suas convenções e não te ajudara a escalar o projeto. 

 

Não estou puxando sardinha pro Laravel, mas não vejo nenhuma limitação nesta obra de arte, principalmente em escalar qualquer projeto. 
"O que mais vejo em grupos é a limitação do próprio desenvolvedor", pois pulam etapas básicas e vai direto para o framework. 

 

:thumbsup:



 

Concordo em alguns pontos.

 

Porém, não vejo problema algum em desenvolver qualquer projeto do zero, nem vejo problema em documentá-lo, se o projeto recebe mais tarde outros profissionais para atuar, já que estes são denominados "profissionais mais a frente", eles saberão com certeza como dar continuidade, expandir o projeto em questão. Desenvolver um projeto do zero é uma arte bélica, é o verdadeiro sentido de "criar/desenvolver". O que o Mateus quer dizer, (eu acho) é que desenvolver do zero, ele puxa o controle pra ele, sem depender de limitação ou exigência da ferramenta.

 

Agora, se por exigência por parte do contratante, o "desenvolvedor do zero" tem de estar apto e preparado para utilizar um bom Framework, e não vejo porque não utilizar o Laravel, é bom framework realmente, e bem aceito no mercado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Alaerte Gabriel disse:

Porém, não vejo problema algum em desenvolver qualquer projeto do zero, nem vejo problema em documentá-lo, se o projeto recebe mais tarde outros profissionais para atuar.

O problema é este, muitos não sabem nem como se documenta um projeto, sem falar que sai caro fazer toda está documentação, se for para futuramente deixar um vespeiro na mão de outras pessoas, que escolha um bom FW e trabalhe em cima. Já trabalhei em empresas onde os antigos desenvolvedores deixaram bombas, se mexer quebra parte da aplicação, colocar novos requisitos nem pensar.

Estou falando de sistemas de médio a grande porte, onde é mais fácil deixar o legado pra trás, e ter como base para o novo um FW e  não de microsites onde um dois mete a mão.  Pois se a equipe cresce rapidamente, já tem toda um gama de documentação. Seja o FW front ou back.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Williams Duarte esse é um problema endêmico do mundo do desenvolvimento. Trabalhei nas mais variadas empresas, desde empresa com 3 pessoas, até empresa de âmbito nacional com um número expressivo de funcionários. Todas sofreram, sofrem e/ou sofrerão com esse problema. Somente os ERPs globais (SAP, AX, etc...) eu posso considerar uma exceção, pois, você deve desenvolver neles e ponto final. E nem são tão padronizados assim.

 

@Mateus Silva  normalmente, quando encontro com pessoas com resistência a frameworks, é por um pequeno sentimento de que se tornarão "menos" programadores por estarem utilizando uma ferramenta. Pergunta, o contador deixa de ser "menos" contador por utilizar uma calculadora ao invés de realizar os cálculos de cabeça? Alguém que usa uma calculadora HP 12C tem menos controle que alguém que utilize uma calculadora sharp elsi mate el-230? Ou até outros exemplos: um pedreiro é "menos pedreiro" por usar uma betoneira em detrimento de uma enchada com uma caixa de cimento? O marceneiro é "menos" marceneiro por utilizar ferramentas elétricas ao invés de manuais?

 

Nenhum deles deixará de ter controle na ação que desenpenharem, eles ainda serão totalmente responsável pelo trabalho que realizaram, e isso tem tudo haver com confiança na ferramenta que estão utilizado. O framework não é nada mais que uma ferramenta e, sua função, não difere em nada do que qualquer outra ferramenta aqui mencionada.  O contrário também é verdadeiro, ninguém será melhor que outro apenas por utilizar inúmeras ferramentas.

 

Hoje em dia não importa qual framework você utiliza, seja X, Y ou Z ou se nem utiliza um framework. Apenas que entenda os padrões que eles estão utilizando. Eu, particularmente, aprendi apenas um framework (CodeIgniter), pois ele não segue nenhum padrão. Mas trabalho basicamente com qualquer framework, apenas porque aprendi como deve funcionar o MVC, PSRs, Design Patterns, entre outros muitos estudos ligados ao desenvolvimento de software. Caso eu tenha alguma dúvida, o manual com certeza irá me atender. Se não me atender, existem fóruns para dúvidas rápidas (tal qual iMasters). Se nem isso me ajudar, bem, por que diabos usaram esse FrameWork?

 

Se achas um framework demasiado grande, utilize um micro framework. Todos eles são escalonáveis, se necessitar de algum módulo novo, basta inserí-los. Tenho certeza que sua produtividade se multiplicará, seus sistemas serão mais seguros e confiáveis e reduzirá o custo de manutenção. Acredito, custo de manutenção é intrinsicamente relacionado ao custo de desenvolvimento.

 

Se mesmo com as vantagens do uso de um framework tiver receio em utilizá-lo, não é um problema. Apenas atente-se para seguir os padrões mundiais de desenvolvimento PHP (PSR's) e, também, os padrões de desenvolvimento de software (design principles, design patterns, DDD, TDD, etc..)

 

Para finalizar, deixo a "frase do ano" dos meus colegas desenvolvedores aonde eu trabalho:

Citar

One man's crappy software is another man's full time job. ~Jessica Gaston

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Alaerte Gabriel Exatamente isso, eu gosto de ter liberdade total no meu sistema.

@Williams Duarte Sim! Trabalho em uma empresa onde o desenvolvedor criou o software estruturado, é uma bela de uma bagunça, e é por este motivo que quero fazer o negócio bem feito, pra não dar problema pra futuros desenvolvedores que venham a trabalhar nisso também.

@Gabriel Heming Então Gabriel, não é nem isto de "me tornar menos programador" é que eu realmente ainda não vi (ou não tive a necessidade) de algo que só um framework me disponibilizasse ou que fosse realmente muito melhor utilizar um. Quanto aos padrões, na maioria das minhas aplicações eu sigo o modelo MVC e PSR-4, recorri aqui ao fórum pra realmente ver o que seria mais útil e produtivo a longo prazo pro sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E PSR-7?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A não ser que seja um sistema muito especifico, acredito que seja válido utilizar um framework, micro-framework ou então componentes que são mantidos pela comunidade PHP (Packagist/Composer), acho que assim é possível ficar mais focado em solucionar o problema da regra de negócio e não em problemas que já foram muito bem solucionados por várias pessoas da comunidade, como por exemplo: persistência no banco de dados, envio de e-mail, logs, etc.

 

No seu caso, como você disse que gostaria de ter uma "liberdade", acho que seria interessante a utilização de componentes, pois caso algum desses componentes não atenda mais a sua necessidade e você precise de algo mais especifico, acredito que terá menos dificuldade em alterá-lo; visto que realmente alguns frameworks ainda fazem com que o seu código fique acoplado ao código do framework, dificultando assim futuras modificações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Gabriel Heming Não cheguei a ver sobre, vou pesquisar!

@deoliveiralucas Sim sim, uso o composer pra algumas coisas, twig, por exemplo. E é exatamente isso, o framework fica muito "dependente", tendo o código na mão eu acredito que seja melhor de adaptar ao que eu optar pelo melhor caminho, mas, como eu disse ai à cima, não afirmo nada, a gente tá sempre aprendendo coisas novas então se eu disse algo errado ou que possa ser tratado de forma melhor estou aberto à sugestões!

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
    • Por Carlos Web Soluções Web
      Olá...
      Estou tentando fazer o seguinte !!
      Listando dados em tabela !!
      Gostaria que....se na listagem houver 4 linhas...indepedente de seu número de ID, faça a listagem em ID ser em ordem 1 2 3 4 !!
      Exemplo...se tiver uma listagem de dados que está em ID 1 3 3...faça ficar 1 2 3 !!

       
      echo "<table class='tabela_dados' border='1'> <tr> <td>ID</td> <td>Nome Empresa</td> <td>Responsável</td> <td>Telefone 1</td> <td>Telefone 2</td> <td>E-mail 1</td> <td>E-mail 2</td> <td>Endereço</td> <td>CEP</td> <td>Bairro</td> <td>AÇÃO 1</td> <td>AÇÃO 2</td> </tr> "; $sql = "SELECT ID FROM usuarios_dados WHERE Usuario='$usuario'"; $result = $conn->query($sql); $num_rows = $result->num_rows; $Novo_ID = 1; for ($i = 0; $i < $num_rows; $i++) { $registro = $result -> fetch_row(); $sql2 = "UPDATE usuarios_dados SET ID='$Novo_ID' WHERE ID='$Novo_ID'"; $result2 = $conn->query($sql2); $Novo_ID++; } $sql = "SELECT * FROM usuarios_dados"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "<tr> <td>$row[ID]</td> <td>$row[Nome_Empresa]</td> <td>$row[Responsavel]</td> <td>$row[Telefone_1]</td> <td>$row[Telefone_2]</td> <td>$row[Email_1]</td> <td>$row[Email_2]</td> <td>$row[Endereço]</td> <td>$row[CEP]</td> <td>$row[Bairro]</td> <td> <form method='post' action='Editar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='EDITAR'> </form> </td> <td> <form method='post' action='Deletar_Dados.php'> <input type='hidden' name='usuario' value='$usuario'> <input type='hidden' name='senha' value='$senha'> <input type='hidden' name='ID' value='$row[ID]'> <input type='submit' style='padding: 10px;' value='DELETAR'> </form> </td> </tr> "; } } else { echo "0 results"; } $conn->close();  
    • Por ILR master
      Boa tarde pessoal, tudo bem ?
       
      Eu uso o tinymce para cadastro de textos no meu siite, porém, quero fazer um sistema para que os colunistas possam fazer o próprio post.
      O problema do tinymce, é que ele mantém a formatação do texto copiado, como tamanho de fonts, negritos, etc... Quero que o usuário cole o texto e a própria textarea limpe a formatação para que ele formate como quiser.
       
      A pergunta é:
       
      O tinymce tem uma opção para desabilitar a formatação quando um texto é colocado?
      Tem alguma função via java ou php para retirar a formatação assim que o texto é colado?
      Ou é melhor usar um outro editor?
       
      Agradeço deste já.
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
×

Informação importante

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