Help with project code organization

Asked

Viewed 36 times

0

I joined a project written in php that at first had no idea of the proportion it would take. So I’ve written so much code that even I’m a little lost to locate some problems.

To do the project, as I was doing I was also learning about language, but without any notion of what the organization would look like.

I standardized some things that would not even be the right way.

Thus: The files with the html code are loose in the root of the folder. Those who perform some logic are in the controls folder. Those who have the functions that search, insert, change and delete records in the database are in the classes folder. And an api folder I made to return a Json when using a mobile app.

So far so good, I think it is even organized. But some files of the classes for example are too big.

Ex (this class has 440 rows and rising):

function inserePedido($id_cliente){
    $query = "INSERT INTO pedido (id_cliente) VALUES ({$id_cliente});";
    $conexao = Conexao::criarConexao();
    return $conexao->exec($query);
}

function inserePedidoItem($cliente,$produto,$tipo_cobranca,$id_tabela,$preco,$sequencia,$vendedor,$data,$cod_barras){
  $uuid=uniqid(rand(), true);
  $data_vencimento = date('Y-m-d',strtotime("+20 days",strtotime($data)));
  $query = "INSERT INTO pedido_item (id_cliente,id_produto,sequencia,tamanho,
  id_vendedor,preco,situacao,data_hora,data_vencimento,cod_barras,tipo_cobranca,id_tabela,uuid) VALUES (
    {$cliente},{$produto['id']},{$sequencia},{$produto['tamanho']},
    {$vendedor},{$preco},6,'{$data}','{$data_vencimento}','{$cod_barras}',{$tipo_cobranca},{$id_tabela},'{$uuid}');";
  $conexao = Conexao::criarConexao();
  return $conexao->exec($query);
}

function inserePedidoItemReserva($cliente,$produto,$tipo_cobranca,$id_tabela,
$preco,$sequencia,$vendedor,$data,$cod_barras){
  $uuid=uniqid(rand(), true);
  $data_vencimento = date('Y-m-d',strtotime("+20 days",strtotime($data)));
  $query = "INSERT INTO pedido_item (id_cliente,id_produto,sequencia,tamanho,
  id_vendedor,preco,situacao,data_hora,data_vencimento,cod_barras,tipo_cobranca,id_tabela,uuid)
  VALUES ({$cliente},{$produto['id']},{$sequencia},{$produto['tamanho']},
  {$vendedor},{$preco},15,'{$data}','{$data_vencimento}','{$cod_barras}',{$tipo_cobranca},{$id_tabela},'{$uuid}');";
  $conexao = Conexao::criarConexao();
  return $conexao->exec($query);
}

function inserePedidoItemCodigo($cliente,$produto,$tipo_cobranca,$id_tabela,
$preco,$sequencia,$vendedor,$data,$cod_barras){
  $uuid=uniqid(rand(), true);
  $data_vencimento = date('Y-m-d',strtotime("+20 days",strtotime($data)));
  $query = "INSERT INTO pedido_item (id_cliente,id_produto,sequencia,tamanho,
  id_vendedor,preco,situacao,data_hora,data_vencimento,cod_barras,tipo_cobranca,id_tabela,uuid)
  VALUES ({$cliente},{$produto['id']},{$sequencia},{$produto['tamanho']},{$vendedor},
  {$preco},4,'{$data}','{$data_vencimento}','{$cod_barras}',{$tipo_cobranca},{$id_tabela},'{$uuid}');";
  $conexao = Conexao::criarConexao();
  return $conexao->exec($query);
}

function inserePedidoParcialItemCodigo($cliente,$produto,$tipo_cobranca,$id_tabela,
$preco,$sequencia,$vendedor,$data,$cod_barras){
  $uuid=uniqid(rand(), true);
  $data_vencimento = date('Y-m-d',strtotime("+20 days",strtotime($data)));
  $query = "INSERT INTO pedido_item (id_cliente,id_produto,sequencia,tamanho,confirmado,
  id_vendedor,preco,situacao,data_hora,data_vencimento,cod_barras,tipo_cobranca,id_tabela,uuid)
  VALUES ({$cliente},{$produto['id']},{$sequencia},{$produto['tamanho']},1,{$vendedor},
  {$preco},4,'{$data}','{$data_vencimento}','{$cod_barras}',{$tipo_cobranca},{$id_tabela},'{$uuid}');";
  $conexao = Conexao::criarConexao();
  return $conexao->exec($query);
}

function inserePedidoProdutoDevolucao($cliente,$produto,$tipo_cobranca,
$id_tabela,$preco,$sequencia,$vendedor,$data,$cod_barras){
  $uuid=uniqid(rand(), true);
  $query = "INSERT INTO pedido_item (id_cliente,id_produto,sequencia,tamanho,
  id_vendedor,preco,situacao,data_hora,cod_barras,tipo_cobranca,id_tabela,uuid,confirmado)
  VALUES ({$cliente},{$produto['id']},{$sequencia},{$produto['tamanho']},
  {$vendedor},{$preco},8,'{$data}','{$cod_barras}',{$tipo_cobranca},{$id_tabela},'{$uuid}',1);";
  $conexao = Conexao::criarConexao();
  return $conexao->exec($query);
}

function removePedidoProdutoUnidade($id_cliente,$sequencia){
  $query = "DELETE FROM pedido_item WHERE id_cliente={$id_cliente}
  AND sequencia={$sequencia} AND (situacao = 6 OR situacao = 4 OR situacao=15);";
  $conexao = Conexao::criarConexao();
  return $conexao->exec($query);
}

function removePedidoItemDevolucao($id_cliente){
  $query = "DELETE FROM pedido_item WHERE id_cliente={$id_cliente} AND (situacao = 8 OR situacao = 12);";
  $conexao = Conexao::criarConexao();
  return $conexao->exec($query);
}

function excluirProdutoPedidoTotal($id_cliente,$id_produto,$data){
    $query = "DELETE FROM pedido_item WHERE id_cliente={$id_cliente}
    AND DATE(data_hora)=DATE('{$data}') AND id_produto={$id_produto}
    AND (situacao = 6 OR situacao = 4 OR SITUACAO=15);";
    $conexao = Conexao::criarConexao();
    return $conexao->exec($query);
}

function removerPedidoUnidade($id_cliente,$sequencia){
    $query = "DELETE FROM pedido_item WHERE id_cliente={$id_cliente}
    AND sequencia={$sequencia}";
    $conexao = Conexao::criarConexao();
    return $conexao->exec($query);
}

function removerPedidoNaoConfirmados($cliente){
  $query = "DELETE FROM pedido_item WHERE id_cliente={$cliente}
  AND confirmado=0";
  $conexao = Conexao::criarConexao();
  return $conexao->exec($query);
}

function finalizarPedidoMaisTarde($cliente){
  $query = "UPDATE pedido set finalizar = 1;";
  $conexao = Conexao::criarConexao();
  $conexao->exec($query);
}

function finalizarPedidoMaisTardeNao($cliente){
  $query = "UPDATE pedido set finalizar = 0;";
  $conexao = Conexao::criarConexao();
  $conexao->exec($query);
}...

There is some design pattern that I can apply that is recommended in these cases, or some suggestion to address more queries more simply. I know there are some frameworks like Windows, but I don’t have more time to learn and do the conversion. And I’m very concerned about maintaining the code.

  • I think you are mixing orders with products. It is better to separate them. Already help.

1 answer

0

I am also a beginner in language and what helped me a lot in the organization was the use of the MVC standard, is not the only way to do nor the best, but in terms of organization helps a lot. In it you can organize the system by layers, and for each layer you make a folder leaving the html files in the root directory. Example:

Patas
CLASS // aqui ficam suas classes bases como, Pedido, Produto e etc;
DAO //  aqui você faz a comunicação com o banco de dados utilizando as classes bases
CONTROLLERS //  aqui você passa os dados da interface para a DAO e vice e versa.

insert link description here

  • Blz. Thank you. I’m going to study it. Some time goes by, the code gets too big and I even start to lose myself. Imagine who takes this code to continue the work. rs. Hug

Browser other questions tagged

You are not signed in. Login or sign up in order to post.