Ir para conteúdo
Fernando Rotermund

Porque programar em PHP se existem tantas plataformas prontas.

Recommended Posts

Porque continuar programando em PHP se existem tantas plataformas que dizem resolver todos os problemas.

 

Em matéria de CMS o Wordpress domina, então porque fazer o seu próprio CMS?

Fanboys do Wordpress dizem que a ferramenta tem tudo, e se não tiver é só fazer um plug-in e ta tudo resolvido. No WP tem plug-ins para tudo, e-commerce, forum, CMS bacanudo, sistema para ajudar no SEO entre milhares de opções prontas para usar.

 

Porque desenvolver um sistema de e-commerce, se na outra ponta temo Magento, OpenCart, Prestashop e etc . E mais uma vez essas plataformas resolvem quase todo o tipo de problema com seus plug-ins.

 

Então, porque fazer algo que já esta pronto, porque devo criar se posso reutilizar e copiar.

 

Não conheço nenhum assunto sobre isso na internet, o que estou querendo debater não são as plataformas prontas em si, mas o exagero de achar que uma delas pode resolver tudo e em qual momento eu devo programar meu proprio CMS ou E-commerce.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguindo sua forma de pensar, você ensinua que: Pra que estudar matemática se a resposta está no Google.

Isso te torna preguiçoso e mais pra frente ignorante.

 

Olha, você não está errado em falar da grandeza do WordPress, que não vê necessidade de se fazer um CMS do zero, ou então uma plataforma e-commerce com a existência de tantas possibilidades gratuitas.

Concordo!

 

Mas e quando você precisar de algo específico? E quando essa ferramenta passar a dar problema? E quando for desenvolver para outra pessoa?

 

Tem que saber equilibrar isso, se for trabalhar com Wordpress, é super importante saber html/css/php/javascript, desta forma você é capaz de criar seu próprio tema, seu próprio plugin e ter seu site 100% da maneira que quer

Compartilhar este post


Link para o post
Compartilhar em outros sites

A grande questão disso tudo é que as pessoas sismam em acreditar que você não precisa criar nada, porque já tem tudo pronto e, afinal, é muito mais fácil pegar o que já tá pronto e modificar do que criar algo do zero.

 

Mas existe um ponto aqui que eu considero crucial: se a sua loja é exatamente igual ao Exra, ao Submarino, ao Ponto Frio, às Americanas ou qualquer outra dessas, por que diabos eu vou comprar na SUA loja e não nas que todo mundo já conhece e sabe que são confiáveis?

 

É justamente por você ter a liberdade de criação que a sua loja pode ter o diferencial necessário pra se destacar no meio dessas gigantes.

 

É justamente por ter a liberdade de CRIAR o seu próprio código, que você pode criar um gerenciador de cobranças melhor que o PagSeguro, um Marketplace melhor que o MercadoLivre etc. É justamente por CRIAR e não COPIAR que você tem a possibilidade de desenvolver um sistema de segurança eficiente sem ter que pagar os seus rins e fígados por isso.

 

Dentre infinitas outras questões, ainda temos um ponto interessante: quando VOCÊ faz, você tem certeza da qualidade, sabe como funciona, sabe utilizar a ferramenta com perfeição e não depende de pesquisar nos fóruns a todo momento coisas como "como ativar o SSL no wordpress?" no nosso amigo Google.

 

Dentre infinitas outras questões ainda, facilidade de uso, segurança garantida, eficiência, um código mais enxuto, descartando inúmeras coisas desnecessárias que os Frameworks possuem e que você nunca vai precisar utilizar, um site mais leve e, portanto, menos demora pra carregar as páginas, controle total sobre tudo que ocorre dentro do seu website, integrações ilimitadas com quaisquer ferramentas que quiser.

 

Resumindo, existem infinitos motivos pra se desenvolver o próprio código, além, é claro, da questão de que se é você quem desenvolve, você tem o direito de vender a sua ideia, o seu produto, depois. Afinal, toda boa ideia é valiosa, desde que bem estruturada, desenvolvida etc, etc e etc.

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

E, claro, você ainda deve levar em consideração a questão de "quando meu negócio for muito mais pra frente, quando ele crescer e se desenvolver de uma forma que eu não esperava, o que eu vou fazer com todas as limitações que esses frameworks talvez me imponham?". Essa é uma pergunta interessante a se fazer.

 

Não basta fazer o que é mais fácil, tem que fazer o que dá certo, o que funciona, o que não vai te dar problemas grandiosos (nenhum problema, quem dirá os grandiosos) no futuro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque desenvolver um sistema de e-commerce, se na outra ponta temo Magento, OpenCart, Prestashop e etc . E mais uma vez essas plataformas resolvem quase todo o tipo de problema com seus plug-ins.

Ai está a sua resposta... as plataformas resolvem QUASE tudo... pesquise por plugins/módulos de cartão de crédito, verá que os que funcionam são pagos... integração com sistemas de análise de risco? Não existem... etc... o que é dado "de graça" é o arroz com feijão, se você quiser a carne, ai tem que por a mão no bolso, sempre foi assim e sempre será. Pesquise por ai quanto custa a hora técnica de um especialista em Magento, é um "absurdo", mesmo a plataforma estando lá de graça para baixar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque PHP não se resume à WordPress, ou qualquer outro CMS pronto. Não devemos esquecer do desenvolvimento de soluções, sistemas específicos para atender necessidade específica, aplicações especiais, em fim, "PROGRAMAR É PRECISO".

 

Além disso, vejo WordPress e demais CMS como uma mesmice, sem diferencial que valia apena deixar o PHP de lado pra usá-lo. INOVAR é preciso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por leo_santo1
      Venho por meio desse post procurar ajuda com meu código!
      Estou fazendo um código usando `DataTable` , sou iniciante na programação, depois de umas pesquisas e até mesmo algumas dicas conseguir construir uma DataTable com banco de dados.
      Continuando minhas pesquisas para aprimorar mais ainda o código, percebi que a  `DataTable` possuir varias funções interessantes, umas delas em especifico chamou bastante minha atenção e até me ajudaria no código que no caso é o uso de Linhas filhas ocultas, que quando fazemos o click em cima de um botão aparece as informações extras da linha ( no caso os dados a mais do banco ) e ao apertar ela novamente ele oculta as informações.
      Gostaria de ajuda para criar essa função na minha Tabela, já realizei pesquisas no próprio site da  `DataTable` , aqui, porem não entendo bem o jeito que eles explicam.
      segue abaixo meu código da table e da  `DataTable` que conecta com o Banco.
       
      Tabela
      <table id="employee-grid" cellpadding="0" cellspacing="0" border="0" class="display" width="100%"> <thead> <tr> <th>Nome</th> <th>CPF</th> <th>Data de Nascimento</th> <th></th> <th>Ação</th> <th></th> </tr> </thead> <thead> <tr> <td><input type="text" data-column="0" class="search-input-text" style="width: 150px;"></td> <th><input type="text" data-column="1" class="search-input-text" style="width: 150px;"></td> <th><input type="text" id="data" data-column="2" class="search-input-text" style="width: 150px;"></th> <th></th> <td> </td> <td></td> </tr> </thead> </table> Script DataTable
      $(document).ready(function() { var dataTable = $('#employee-grid').DataTable( { "processing": true, "serverSide": true, "bJQueryUI": true, "oLanguage": { "sProcessing": "Processando...", "sLengthMenu": "Mostrar _MENU_ registros", "sZeroRecords": "Não foram encontrados resultados", "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros", "sInfoEmpty": "Mostrando de 0 até 0 de 0 registros", "sInfoFiltered": "", "sInfoPostFix": "", "sSearch": "Buscar:", "sUrl": "", "oPaginate": { "sFirst": "Primeiro", "sPrevious": "Anterior", "sNext": "Seguinte", "sLast": "Último" } }, "ajax":{ url :"../Tabelas/Tabela_consulta_cliente.php", // json datasource type: "post", // method , by default get error: function(){ // error handling $(".employee-grid-error").html(""); $("#employee-grid").append('<tbody class="employee-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>'); $("#employee-grid_processing").css("display","none"); } } } ); $("#employee-grid_filter").css("display","none"); // hiding global search box $('.search-input-text').on( 'keyup click', function () { // for text boxes var i =$(this).attr('data-column'); // getting column index var v =$(this).val(); // getting search input value dataTable.columns(i).search(v).draw(); } ); $('.search-input-select').on( 'change', function () { // for select box var i =$(this).attr('data-column'); var v =$(this).val(); dataTable.columns(i).search(v).draw(); } ); } ); Conexão DataTable com o Banco de dados
      <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "loc_equipamentos"; $conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error()); $requestData= $_REQUEST; $columns = array( 0=>'nome_usuario', 1=> 'cpf_usuario', 2=> 'data_nascimento', 3=> 'id_usuario', 4=> 'id_usuario', 5=> 'id_usuario' ); $sql = "SELECT nome_usuario, cpf_usuario, data_nascimento, id_usuario "; $sql.=" FROM usuario"; $query=mysqli_query($conn, $sql) or die("employee-grid-data.php: get employees"); $totalData = mysqli_num_rows($query); $totalFiltered = $totalData; . $sql = "SELECT nome_usuario, cpf_usuario, data_nascimento, id_usuario "; $sql.=" FROM usuario WHERE tipo_perfil = 'CLIENTE' AND ativo_usuario = 'TRUE'"; if( !empty($requestData['columns'][0]['search']['value']) ){ $sql.=" AND nome_usuario LIKE '".$requestData['columns'][0]['search']['value']."%' "; } if( !empty($requestData['columns'][1]['search']['value']) ){ $sql.=" AND cpf_usuario LIKE '".$requestData['columns'][1]['search']['value']."%' "; } if( !empty($requestData['columns'][2]['search']['value']) ){ //age $sql.=" AND data_nascimento LIKE '".$requestData['columns'][2]['search']['value']."%' "; } $query=mysqli_query($conn, $sql) or die("employee-grid-data.php: get employees"); $totalFiltered = mysqli_num_rows($query); $sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." "; $query=mysqli_query($conn, $sql) or die("employee-grid-data.php: get employees"); $data = array(); while( $row=mysqli_fetch_array($query) ) { $nestedData=array(); $informacao ="<div class='botaodiv'> <a href = ?informacao=".$row['id_usuario']." >+ Informações</a> </div>"; $editar ="<div class='botaodiv'> <a href = ?editar=".$row['id_usuario']." >Editar</a> </div>"; $deletar ="<div class='botaodiv'> <a href = ../Eventos/evento.php?DesativaCadastro=".$row['id_usuario']." >Excluir</a> </div>"; $nestedData[] = $row["nome_usuario"]; $nestedData[] = $row["cpf_usuario"]; $nestedData[] = $row["data_nascimento"]; $nestedData[] = $informacao; $nestedData[] = $editar; $nestedData[] = $deletar; $data[] = $nestedData; } $json_data = array( "draw" => intval( $requestData['draw'] ), "recordsTotal" => intval( $totalData ), "recordsFiltered" => intval( $totalFiltered ), "data" => $data ); echo json_encode($json_data); ?> Fora o caso de criar Detalhes para Linhas, Caso alguém tenha alguma sugestão de como melhorar meu código ( por exemplo uma Conexão ao Banco mais simples, um Js melhor etc.. ) ou alguma critica para eu evoluir, irei agradecer bastante!  
    • Por JondasCortes
      Olá, bom dia a todos! Antes de tudo, deixo claro que sou leigo e agradeço antecipadamente pela paciência, cordialidade e ajuda.
       
      Tenho um site Wordpress com Woocommerce que possui somente 6000 visitas por mês e uma taxa baixíssima de conversão, em muito, por conta da grande lentidão do site.
      A grande questão é que tenho neste woocommerce cerca de 40.000 produtos cadastrados para venda (e preciso que continue com essa quantidade). E é isso, isso é o site, basicamente. Nada demais.
      O site está muito mal posicionado no Google.
      O banco de dados MYSQL pesa cerca  de 600 mb.
      O que fiz até aqui foi instalar o plugin de cache W3.
      Comecei em uma hospedagem compartilhada. Não rolou pois parece que a alta quantidade de postagens(produtos) pesa.
      Depois passei por duas VPNs, e não deu certo também. O site além de lento ficava totalmente instável e vivia saindo do ar. Tudo isso eu mesmo transferindo e levando na garra em hospedagens sem nenhuma adaptação específica para minha situação.
      Por último, eu fui para uma Cloud Hosting da Locaweb com banco de dados dedicado na seguinte configuração:
      4GB MEMÓRIA / 2vCPUs PROCESSAMENTO / Mysql Dedicado / 50GB espaço em disco  / Transferência ilimitada / Gerenciado por eles. (Pagando 329 reais por mês).
      Foi a única que segurou o site, embora esteja ainda bastante lento para carregar.
      A questão é que – na minha visão de leigo – intuo que dê pro site ficar mais rápido e até a hospedagem mais barata ou no mínimo – otimizada – pois o site nada mais é do que um wordpress morto com um woocommerce com 40.000 produtos cadastrados, sem grande complexidades (incialmente eu tinha cadastrado tags mas exclui todas elas pra diminuir o problema)
      Os índices das minhas páginas no PageSpeed Insights do Google estão bem ruins, girando em torno de 30. Ao desativar os plugins e deixar só o essencial dá uma ligeira melhorada, mas penso que era pra essa hospedagem aguentar.
      Simplesmente não sei o que fazer. Gostaria de uma luz, por favor.
      Enfim, minha hospedagem não é otimizada para wordpress (não sei se isso faz diferença e quanto faz) , não estou usando nenhuma CDN (será que isso poderia fazer alguma diferença mesmo eu usando uma Cloud Hosting?) .
      Não sei que tipo de serviço de otimização, ou hospedagem buscar, tendo em vista que sou leigo.
      Em suma, gostaria de saber que dicas a galera poderia me dar, no que diz respeito à esta situação.
      MUITO grato.
    • Por anepri
      Preciso fazer uma página de consulta onde selecionando a cidade traga como resultado estabelecimentos comerciais daquela cidade. O exemplo do código que estou usando funciona perfeitamente com países, estados e cidade, mas na hora que faço a função "lojas", mesmo o código sendo idêntico não aparece o resultado. O que tem me deixado doida é que os primeiros select funcionam, mas o último "lojas" não funciona de jeito nenhum! Alguém pode olhar o código e me dizer onde estou pecando?
       
      $(function(){ // Pais function pais(){ $.ajax({ type: 'GET', url: 'funcoes.php', data: { acao: 'pais' }, dataType: 'json', success: function(data){ console.log(data); for(i = 0; i < data.qtd; i++){ $('select[name=pais]').append('<option value="'+data.id[i]+'">'+data.pais[i]+'</option>'); } } }); } pais(); function estado(pais){ $.ajax({ type: 'GET', url: 'funcoes.php', data: { acao: 'estado', id: pais }, dataType: 'json', beforeSend: function(){ $('select[name=estado]').html('<option>Carregando...</option>'); }, success: function(data){ $('select[name=estado]').html(''); $('select[name=estado]').append('<option>Selecione o estado</option>'); for(i = 0; i < data.qtd; i++){ $('select[name=estado]').append('<option value="'+data.id[i]+'">'+data.estado[i]+'</option>'); } } }); } // Cidade function cidade(estado){ $.ajax({ type: 'GET', url: 'funcoes.php', data: { acao: 'cidade', id: estado }, dataType: 'json', beforeSend: function(){ $('select[name=cidade]').html('<option>Carregando...</option>'); }, success: function(data){ $('select[name=cidade]').html(''); $('select[name=cidade]').append('<option>Selecione a cidade</option>'); for(i = 0; i < data.qtd; i++){ $('select[name=cidade]').append('<option value="'+data.id[i]+'">'+data.cidade[i]+'</option>'); } } }); } function contrubuinte(cidade){ $.ajax({ type: 'GET', url: 'funcoes.php', data: { acao: 'contrubuinte', id: cidade }, dataType: 'json', beforeSend: function(){ $('select[name=contrubuinte]').html('<option>Carregando...</option>'); }, success: function(data){ console.log(data); $('select[name=contrubuinte]').html(''); $('select[name=contrubuinte]').append('<option>Selecione a contrubuinte</option>'); for(i = 0; i < data.qtd; i++){ $('select[name=contrubuinte]').append('<option value="'+data.id[i]+'">'+data.contrubuinte[i]+'</option>'); } } }); } $('select[name=pais]').change(function(){ var id = $(this).val(); estado(id); }); $('select[name=estado]').change(function(){ var idEstado = $(this).val(); cidade(idEstado); }); $('select[name=cidade]').change(function(){ var id = $(this).val(); contrubuinte(id); }); }); <?php require("config.php"); $retorno = array(); if($_GET['acao'] == 'pais'){ $sql = $pdo->prepare("SELECT * FROM pais"); $sql->execute(); $n = 0; $retorno['qtd'] = $sql->rowCount(); while($ln = $sql->fetchObject()){ $retorno['pais'][$n] = $ln->pais; $retorno['id'][$n] = $ln->id; $n++; } } if($_GET['acao'] == 'estado'){ $id = $_GET['id']; $sql = $pdo->prepare("SELECT * FROM estados WHERE id_pais = :id"); $sql->bindValue(":id", $id, PDO::PARAM_INT); $sql->execute(); $n = 0; $retorno['qtd'] = $sql->rowCount(); while($ln = $sql->fetchObject()){ $retorno['estado'][$n] = $ln->estado; $retorno['id'][$n] = $ln->id; $n++; } } if($_GET['acao'] == 'cidade'){ $id = $_GET['id']; $sql = $pdo->prepare("SELECT * FROM cidades WHERE id_estado = :id"); $sql->bindValue(":id", $id, PDO::PARAM_INT); $sql->execute(); $n = 0; $retorno['qtd'] = $sql->rowCount(); while($ln = $sql->fetchObject()){ $retorno['cidade'][$n] = $ln->cidade; $retorno['id'][$n] = $ln->id; $n++; } } if($_GET['acao'] == 'contribuinte'){ $id = $_GET['id']; $sql = $pdo->prepare("SELECT * FROM contribuinte WHERE id_cidade = :id"); $sql->bindValue(":id", $id, PDO::PARAM_INT); $sql->execute(); $n = 0; $retorno['qtd'] = $sql->rowCount(); while($ln = $sql->fetchObject()){ $retorno['contribuinte'][$n] = $ln->contribuinte; $retorno['id'][$n] = $ln->id; $n++; } } die(json_encode($retorno)); <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <select name="pais"> <option>Selecione o Pais</option> </select> <select name="estado"> <option>Selecione o Estado</option> </select> <select name="cidade"> <option>Selecione a Cidade</option> </select> <select name="contribuinte"> <option>Selecione o Contribuinte</option> </select> <script src="jquery.js"></script> <script src="funcoes.js"></script> </body> </html>  
    • Por dba.amaro
      Galera, bom dia/tarde/noite, 
       
      Estou desenvolvendo uma aplicação web, porém preciso mostrar algumas informações e os objetos vão mudar de cor / porcentagem, segundo as informações que estão contidas no banco de dados, 
       
      Tenho, algumas ideias, porém não sei nem por onde começar, se alguém puder ajudar, agradeço !!
       
      Um abraço  a todos e bons posts!
    • Por Malebo
      Boas.
       
      Estou a três semana com erro abaixo, preciso da vossa ajura para poder baixar as imagens do mysql no laradock.
      Abaixo o trecho de codigo, quando executou docker-compose up -d mysql ele nunca sai desta tela.
       
      $ docker-compose build --no-cache mysql
      Building mysql
      Step 1/9 : ARG MYSQL_VERSION=8.0
      Step 2/9 : FROM mysql:${MYSQL_VERSION}
      8.0: Pulling from library/mysql
       
×

Informação importante

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