Dúvida de iniciante/médio
Boa Tarde pessoal.
Eu comecei a programar pela web.
Já fiz alguns trabalhos bem legais em PHP e estou iniciando um de maior importância.
Eu lí, relí e procurei vários meios de me adaptar com o padrão MVC, mas não gostei.
Então criei uma aplicação base pra depois reformulá-la.
Simplificando, coloquei um htaccess que redireciona tudo para um arquivo (central.php)
e a partir dali, inseri includes, redirecionei, etc;
Veja como o fiz:
<?
date_default_timezone_set("Brazil/East");
// Recebe a URL digitada
$url_digitada = $_SERVER['REQUEST_URI'];
// Verifica se / é ultimo caractere e a ignora
if (substr($url_digitada, -1) == '/') { $url_digitada = substr($url_digitada, 0, -1); };
// Transforma a URL em array separando a string a cada barra
$url_array = explode("/", $url_digitada);
// Torna 0 o HOST, e remove www.
$url_array[0] = $_SERVER['SERVER_NAME']; if (strstr($url_array[0], 'www.')) { $url_array[0] = substr($url_array[0], 4); };
// AJAX
if ($url_array[1] == 'ajax') {
include ('scripts/bdi.php');
include ('scripts/ajax.php');
// PRINT
} else if ($url_array[1] == 'print') {
?>
<!DOCTYPE html>
<html>
<head>
<meta content="text/html" charset="iso-8859-1" http-equiv="content-type">
<link rel="stylesheet" href="http://<? echo $_SERVER['SERVER_NAME']?>/print.css" />
</head>
<? // Inclui Informações de conexão ao Banco de dados
include ('scripts/bdi.php');
// Inclui Funções
include ('scripts/fn.php');
// Inclui Autenticador
include ('scripts/aut.php');
### Incluir Páginas
// OS
if ($url_array[2] == 'os') {
include ('paginas/print/os.php');
// Fechamento de Caixa
} else if ($url_array[2] == 'fechamento-caixa') {
include ('paginas/print/fechamento-diario-caixa.php');
// Fechamento de Caixa
} else if ($url_array[2] == 'faturas') {
include ('paginas/print/faturas.php');
// Relatório Movimento Mensal
} else if ($url_array[2] == 'relatorio_movimento-mensal') {
include ('paginas/print/relatorio_movimento-mensal.php');
// Relatório Diário Serviços
} else if ($url_array[2]== 'relatorio_diario-servicos') {
include ('paginas/print/relatorio_diario-servicos.php');
}
} else {
?>
<!DOCTYPE html>
<html>
<head>
<title>iGraf</title>
<meta content="text/html" charset="iso-8859-1" http-equiv="content-type">
<link rel="stylesheet" href="http://<? echo $_SERVER['SERVER_NAME']?>/estilo.css" />
<link rel="stylesheet" href="http://<? echo $_SERVER['SERVER_NAME']?>/scripts/file-tree/estilo.css" />
<script type="text/javascript" src="http://<? echo $_SERVER['SERVER_NAME']?>/scripts/jquery-2.1.3.min.js"></script>
<script type="text/javascript" src="http://<? echo $_SERVER['SERVER_NAME']?>/scripts/jquery-ajax-autocomplete/src/jquery.autocomplete.js"></script>
<script type="text/javascript" src="http://<? echo $_SERVER['SERVER_NAME']?>/scripts/file-tree/php_file_tree_jquery.js" type="text/javascript"></script>
<script type="text/javascript" src="http://<? echo $_SERVER['SERVER_NAME']?>/scripts/scripts.js"></script>
</head><?
// Inclui Informações de conexão ao Banco de dados
include ('scripts/bdi.php');
// Inclui Funções
include ('scripts/fn.php');
// Inclui Autenticador
include ('scripts/aut.php');
// Executar
if ($url_array[1] == 'executar') {
// Login
if ($url_array[2] == 'login') {
include ('scripts/funcoes/logar.php');
// Novo Cliente
} else if ($url_array[2] == 'novo_cliente') {
include ('scripts/funcoes/novo_cliente.php');
// Editar Cliente
} else if ($url_array[2] == 'editar_cliente') {
include ('scripts/funcoes/editar_cliente.php');
// Novo OS
} else if ($url_array[2] == 'novo_os') {
include ('scripts/funcoes/novo_os.php');
// Editar OS
} else if ($url_array[2] == 'editar_os') {
include ('scripts/funcoes/editar_os.php');
// Novo ORÇAMENTO
} else if ($url_array[2] == 'novo_orcamento') {
include ('scripts/funcoes/novo_orcamento.php');
// Editar ORÇAMENTO
} else if ($url_array[2] == 'editar_orcamento') {
include ('scripts/funcoes/editar_orcamento.php');
// Encerrar OS
} else if ($url_array[2] == 'encerrar_os') {
include ('scripts/funcoes/encerrar_os.php');
// Receber
} else if ($url_array[2] == 'receber') {
include ('scripts/funcoes/receber.php');
} else if ($url_array[2] == 'receber_nf') {
include ('scripts/funcoes/receber_nf.php');
// Pagar
} else if ($url_array[2] == 'pagar') {
include ('scripts/funcoes/pagar.php');
// Nova Fatura
} else if ($url_array[2] == 'nova_fatura') {
include ('scripts/funcoes/nova_fatura.php');
// Segundo Vencimento
} else if ($url_array[2] == '2vencimento') {
include ('scripts/funcoes/2vencimento.php');
// Transferências
} else if ($url_array[2] == 'transferencia') {
include ('scripts/funcoes/transferencia.php');
// Faturar OS
} else if ($url_array[2] == 'faturar_os') {
include ('scripts/funcoes/faturar_os.php');
// Status OS
} else if ($url_array[2] == 'status_os') {
include ('scripts/funcoes/status_os.php');
// Nova Fatura
} else if ($url_array[2] == 'nova_fatura') {
include ('scripts/funcoes/nova_fatura.php');
// Config
} else if ($url_array[2] == 'config') {
include ('scripts/funcoes/config.php');
// Cadastros
} else if ($url_array[2] == 'cadastros') {
include ('scripts/funcoes/cadastros.php');
// Nota Fiscal
} else if ($url_array[2] == 'nf') {
include('scripts/funcoes/nf.php');
}
// Impressão
} else if ($url_array[1] == 'print') {
$ms = 'print';
$pagina = 'print';
include ('base.php');
// Página Inicial
} else if ($url_array[1] == 'test.php') {
include ('test.php');
} else if($url_array[1] == ''){
$ms = 'inicial';
$pagina = 'inicial';
include ('base.php');
// Clientes
} else if ($url_array[1] == 'clientes') {
$ms = 'clientes';
$pagina = 'clientes';
include ('base.php');
// Orçamentos
} else if ($url_array[1] == 'orcamentos') {
$ms = 'orcamentos';
if ($url_array[2] == 'novo') {
$pagina = 'orcamento_novo';
} else {
$pagina = 'orcamento';
}
include ('base.php');
// OS
} else if ($url_array[1] == 'os') {
$ms = 'os';
if ($url_array[2] == 'novo') {
$pagina = 'os_novo';
} else {
$pagina = 'os';
}
include ('base.php');
// Financeiro
} else if ($url_array[1] == 'financeiro') {
$ms = 'financeiro';
$pagina = 'financeiro';
include ('base.php');
// Nota Fiscal
} else if ($url_array[1] == 'nf') {
$ms = 'nf';
$pagina = 'nf';
include ('base.php');
// Relatórios
} else if ($url_array[1] == 'relatorios') {
$ms = 'relatorios';
$pagina = 'relatorios';
include ('base.php');
// Configurações
} else if ($url_array[1] == 'configuracoes') {
for( $u = 0; $u < count($url_array); $u++) {
$pe = explode("/",$url_digitada,-$u); // QUEBRA URL DIGITADA POR CADA "/", LIMITANDO
$pi = implode("/",$pe); // JUNTA ARRAY
$pr = str_replace("/","_",$pi); // Substitui / por _
$p = substr($pr, 1); // Remove primeira _ da string
// Procura Arquivo .php em pácginas apartir do URL
if(file_exists('paginas/'.$p.'.php')) {
$ms = $url_array['1'];
$rp = $pi;
$pagina = $p; break;
}
}
$ms = 'config';
// $pagina = 'configuracoes';
include ('base.php');
} else {
$ms = 'erro';
$pagina = '404';
include ('base.php');
}
}
mysqli_close($conn);
?>
Para uma página de consulta, o arquivo insere o arquivo "base.php" que possuim os headers e include ("$pagina"), que insere a página (View) que foi solicitada.
Eu gostaria de permanecer usando este princípio de controlador, as requisições acima, são citadas como ajax; manter também algo parecido pois assim tenho controle sobre as minhas api.
Mas gostaria de melhorias quanto a velocidade, e implementar um sistema de singlepage, onde ajax, ou angularjs pegassem apenas informações da página ($pagina) e as trocasse.
Já li também que é possível fazer utilizando AngularJS (Que na verdade substituiria minha central php(o que não quero)).
Então fica a duvida, com fazer este projeto carregar suas páginas sem dar reload?!
Alguém tem dicas de como posso otimizá-lo, sem perder o princípio acima?!
Desde já, obrigado pessoal ;)
Discussão (2)
Carregando comentários...