Se você não trabalha com a classe (programação orientada a objeto) não há porque instalar um roteador no PHP, mas nada impede de você trabalhar com a classe no meio dos códigos. Nesse caso, é a classe que vai precisar de um roteador para saber qual a função você precisa utilizar.
Vamos supor que exista uma função chamada inicio. Para chamá-lo, você pode usar header('location:classe.php?inicio). No caso acima, essa função não existe.
A seguir vou deixar uma lista de uma classe que não tem o suporte de um autoload e um roteador no index.php:
arquivo diario.php
<linkhref="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css"rel="stylesheet"><scriptsrc="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script><style>@media(min-width:768px){ body {width:50%;margin: auto}}@media(max-width:767px){ body {width:75%;margin: auto}}
a {color:blue;text-decoration:none}a:hover {color:black;}
form {margin:0}.inv {border:none;background:transparent;font-weight:600}.linha {line-height:0px}
summary{list-style:none}
td {white-space: nowrap}</style><?php
session_start();
$mysqli=new mysqli("localhost","root","","teste");
date_default_timezone_set('America/Sao_Paulo');function dbr($date){return date('d/m/y',strtotime($date));}function dec($value){return($value)? number_format($value,2,',','.'):null;}function deca($num){
$value=str_replace(".","",$num);return str_replace(",",".",$value);}classDiario{function roteador(){if(count($_GET)){
$metodo=key($_GET);
$parametro=$_GET[$metodo];return $this->$metodo($parametro);}if(count($_POST)){
$metodo=key($_POST);
$parametro=$_POST[$metodo];return $this->$metodo($parametro);}}function inicio(){global $mysqli;
$dia=(isset($_SESSION['dia']))? $_SESSION['dia']: date('Y-m-d');
$mensagem=(date('Y-m-d',strtotime($dia))<>date('Y-m-d'))?" hoje é ".date('d/m/Y'):null;
$lctos = json_decode(json_encode($mysqli->query("select * from tbdiario
where dia = '$dia' order by lcto, docto")->fetch_all(MYSQLI_ASSOC)));
$somaDebito=$mysqli->query("select sum(case when contad>0 then valor else 0 end) as soma
from tbdiario where dia = '$dia'")->fetch_assoc()['soma'];
$somaCredito=$mysqli->query("select sum(case when contac>0 then valor else 0 end) as soma
from tbdiario where dia = '$dia'")->fetch_assoc()['soma'];?><tableclass='table table-striped'><trclass=fw-semibold><tdcolspan=5><formmethod=postaction=diario.php><inputtype='submit'name=lancamentovalue='Lançamentos'size='8'> do dia
<input id=data type=date size=6 name=dia value=<?=$dia?>
onchange=submit()><?=$mensagem?></form><trclass=fw-semibold><td>Lcto<td>Ctad<td>Ctac<tdclass=text-end>Valor
<td><formmethod=postaction=diario.php><inputname=historicoonchange=submit()autocomplete=offplaceholder='Procurar no histórico'></form><?php foreach($lctos as $lcto):?><trclass=linha><td><?=$lcto->lcto?><td><?=$lcto->contad?><td><?=$lcto->contac?><tdclass=text-end><?=dec($lcto->valor)?><td><?=$lcto->hist?><?php endforeach;?><trclass=fw-semibold><td><td><td><tdclass=text-end><?=dec($somaDebito)?><td><?php if($somaCredito!==$somaDebito):?><tdclass='text-end text-danger'><?=dec($somaCredito)?> Total de crédito
<?php else:?></table></div><?php endif;}function historico($hist){global $mysqli;
$historico = str_replace(' ','%',$hist);
$lctos=json_decode(json_encode($mysqli->query("select *
from tbdiario where hist like '%$historico%'")->fetch_all(MYSQLI_ASSOC)));?>
Lançamentos com o histórico <?=$hist?><tableclass='table table-striped linha'><tr><th>Dia<th>Lçto<th>CtaD<th>CtaC<th>Valor<th>Histórico
<?php foreach($lctos as $lcto):?><tr><td><?=dbr($lcto->dia)?><td><?=$lcto->lcto?></a><td><?=$lcto->contad?><td><?=$lcto->contac?><tdclass=text-end><?=dec($lcto->valor)?><td><?=$hist?><?php endforeach;?></table><?php
}function registro(){global $mysqli;
$dia=$_GET['registro'];
$contad = empty($_GET['debito'])?'null': $_GET['debito'];
$contac = empty($_GET['credito'])?'null': $_GET['credito'];
$lcto=$_GET['lcto'];
$valor= empty($_GET['valor'])?'null': deca($_GET['valor']);
$hist=$mysqli->real_escape_string($_GET['hist']);
$mysqli->query("insert into tbdiario (lcto,dia,contad,contac,valor,hist)
values ($lcto,'$dia',$contad,$contac,$valor,'$hist')");return $this->inicio();}function lancamento(){global $mysqli;
$dia=$_SESSION['dia'];//plano de contas
$ativo=json_decode(json_encode($mysqli->query("select *
from tbconta where conta < 201")->fetch_all(MYSQLI_ASSOC)));
$passivo=json_decode(json_encode($mysqli->query("select * from
tbconta where conta >=201")->fetch_all(MYSQLI_ASSOC)));
$contaPassivo=count($passivo);
$proximoLcto=$mysqli->query("select lcto from tbdiario order by lcto desc")->fetch_assoc()['lcto']+1;?><script>
btmenu.innerHTML='Lançamento'
document.title='Lançamento'var idControle,Descricaofunction ir(controle,destino){
idControle=controle
Descricao=destino
}function voltar(texto){
controle=document.getElementById(idControle)
destino=document.getElementById(Descricao)
controle.value=texto.substr(0,3)
tamanho=texto.strlen
destino.innerHTML=texto.substr(4,tamanho)}</script><divclass=modalid=myModal><divclass=modal-dialog><divclass=modal-content><divclass=modal-body><tableclass='table table-striped linha'><?php foreach($ativo as $key=>$row):?><tr><td><ahrefdata-bs-dismiss='modal'onclick=voltar(this.innerHTML)><?=$row->conta." ".$row->descricao?></a><?php if($key<$contaPassivo):?><td><ahrefdata-bs-dismiss='modal'onclick=voltar(this.innerHTML)><?=$passivo[$key]->conta." ".$passivo[$key]->descricao?></a><?php else:?><td><?php endif;?><?php endforeach;?></table></div></div></div></div><form><div><tableclass='table table-sm table-striped'><tr><td>Lançamento<td><?=$proximoLcto?><tr><td>Data<td><?=dbr($dia)?>
<input type='hidden' name='registro' value='<?=$dia?>'>
<input type='hidden' name='lcto' value=<?=$proximoLcto?>>
<tr><td>ContaD<td><inputid=idebitoname=debitoonclick="ir(id,'adebito')"data-bs-toggle=modaldata-bs-target=#myModalsize=2autocomplete=off><aid=adebito></a><tr><td>ContaC<td><inputid=icreditoname=creditoonclick="ir(id,'acredito')"data-bs-toggle=modaldata-bs-target=#myModalsize=2autocomplete=off><aid=acredito></a><tr><td>Valor<td><inputname='valor'id='valor'autocomplete='off'onchange='hist.focus()'><tr><td>Histórico<td><inputname='hist'id='hist'size='30'autocomplete='off'required><tr><td><td><inputtype=submitvalue=Confirmar></table></div></form><?php
}function dia($dia){
$_SESSION['dia']=$dia;
$this->inicio();}}(newDiario)->roteador();?>
Question
Frank K Hosaka
Eu comecei a estudar o PHP em 2020. Os meus códigos estavam bastante embaralhados, PHP aqui, HTML ali, e era difícil consertar o código.
Hoje eu sei um pouco sobre classe e imaginei se era possível criar um conjunto de funções sem o autoload e sem o roteador no PHP.
A resposta é sim, olha só que beleza:
Se você não trabalha com a classe (programação orientada a objeto) não há porque instalar um roteador no PHP, mas nada impede de você trabalhar com a classe no meio dos códigos. Nesse caso, é a classe que vai precisar de um roteador para saber qual a função você precisa utilizar.
Vamos supor que exista uma função chamada inicio. Para chamá-lo, você pode usar header('location:classe.php?inicio). No caso acima, essa função não existe.
A seguir vou deixar uma lista de uma classe que não tem o suporte de um autoload e um roteador no index.php:
Link to comment
Share on other sites
0 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.