Dúvida, estrutura Re:Dúvida, estrutura

Transcrição

Dúvida, estrutura Re:Dúvida, estrutura
Dúvida, estrutura
Posted by dcorreia - 2007/07/25 18:52
_____________________________________
Será que alguem me podia dar alguma dica, ou dizer-me onde poderia encontrar informação para melhorar a estrutura
da programação em php. Pois queria começar a exprimentar desenvolver um projecto maior para melhorar a minha forma
de programar. Pois neste momento fico um pouco per:S dido quando o projecto fica maior:S
============================================================================
Re:Dúvida, estrutura
Posted by yoda.pt - 2007/07/27 04:59
_____________________________________
Boas..
Este é o meu metodo de programar (pode ficar confuso se não for bem documentado):
2 paginas apenas, independentemente do que se tratar o site: index.php e uma pagina só com funções.
A partir daqui, no index levo uma variável que irá ser imprimida apenas no fim do script, e que ao longo do mesmo vai
concatenando a informação necessária.
As várias funções do site são passadas por URL, por meio de $_GET, sendo depois validadas no script por um switch, e
chamada a devida função se necessário.
Um exemplo:
<?
session_start();
$display.='<html><head></head><body>';
switch ($_GET)
{
case "clientes":
{
switch ($_GET)
{
case "ver":
{
$display.=ver();
break;
}
default:
{
$display.=listar();
}
}
break;
}
case "produtos"
{
$display.=produtos();
break;
}
default:
{
$display.=main();
break;
}
}
$display.='</body></html>';
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 1 October, 2016, 03:11
echo $display;
?>
Este era o suporto index.. Penso que deu para perceber o funcionamento .. a pagina das funções contem apenas as
funções que são chamadas no index.
Espero ter ajudado alguma coisa :P
Fica aqui o meu mail no msn se for preciso algum esclarecimento: [email protected]
Post edited by: yoda.pt, at: 2007/07/27 05:06
============================================================================
Re:Dúvida, estrutura
Posted by mAiN_iNfEcTiOn - 2007/07/28 02:34
_____________________________________
Bem, no que toca ao que eu faço... aproveito e vejo pelos vossos comentários se é seguro ou não :P
Isto é o código do carregamento das páginas de diferentes secções do site... tudo carregado no index.php, claro.
<?
// ADQUIRIR O MÓDULO A INSERIR
$modulo="home"; // VALOR POR DEFEITO
if(isset($_GET))
{
$modulo=urlencode($_GET);
}
require("includes/menu.php");
// CARREGA O MÓDULO SE EXISTIR
if(is_dir(BASE_PATH) && file_exists(BASE_PATH . $modulo . ".php"))
require(BASE_PATH . $modulo . ".php");
else
header("location:index.php?module=home");
?>
Na prática o que ele faz é recebe um parâmetro pelo URL, na variável "modulo" (ex:
http://www.teste.com/index.php?modulo=registo)
e verifica se existe algum ficheiro chamado registo.php na pasta BASE_PATH (que é uma constante definida por mim
que guarda o caminho da pasta dos ficheiros).
Se existir, mostra... senao, mostra a página principal.
Post edited by: mAiN_iNfEcTiOn, at: 2007/07/28 02:39
Post edited by: mAiN_iNfEcTiOn, at: 2007/07/28 02:39
============================================================================
Re:Dúvida, estrutura
Posted by tiago - 2007/07/28 10:02
_____________________________________
Viva!
require(BASE_PATH . $modulo . ".php");
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 1 October, 2016, 03:11
require(BASE_PATH . basename($modulo) . ".php"«»);
basename — Retorna a parte nome do arquivo do caminho/path
Descrição:
string basename ( string $path )
Dado uma string contendo um caminho para um arquivo, essa função irá retornar o nome base do arquivo. Se o nome
do arquivo termina com o sufixo, este também será retirado.
No Windows, tanto a barra (/) quanto a barra invertida (\) são usadas como caracter de separacao do caminho. Em
outros ambientes, somente a barra (/).
Exemplo do basename()
<?php
$caminho = "/home/httpd/html/index.php";
$arquivo = basename ($caminho);
// $arquivo = "index.php"
$arquivo = basename ($caminho,".php"«»); // $arquivo = "index"
?>
------------------------------------O que eu costumo fazer para facilitar ainda mais em projectos 'grandes', é efectuar o load dos modulos e
processamento de toda a página no buffer.
Exemplo:
<?php
ob_start();
include( "modulo1" );
include( "modulo2" );
$autenticado = 0;
echo "teste";
echo "teste2";
if( $autenticado == 0 ) {
header("Location: login.php"«»);
}
$conteudo = ob_get_contents();
ob_end_clean();
if( trim( $conteudo ) ) echo $conteudo;
?>
O exemplo anterior serve para salientar a grande vantagem de colocar a página no buffer, isto é, como não é feito
nenhum output (só no buffer) existe a possibilidade de chamar a função header(); em qualquer local sem que seja
apresentada a tal mensagem "headers already sent".
Outra vantagem é o output da página ficar, neste caso, na variavel $conteudo. Pode-se efectuar as alterações que se
quiser a essa mesma variável/conteúdo...
Espero ajudar alguem,
Tiago Lopes
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 1 October, 2016, 03:11
============================================================================
Re:Dúvida, estrutura
Posted by mAiN_iNfEcTiOn - 2007/07/28 19:48
_____________________________________
ahm tiago...
n percebi a tua correcção...
então se os parâmetros tendem a ser:
index.php?modulo=registo
pk raio é que eu havia de fazer:
basename($modulo)
Isso é para casos do tipo:
index.php?modulo=registo.php
onde eu tiro do "registo.php" a string "registo".
Juro que não percebi a utilidade!
============================================================================
Re:Dúvida, estrutura
Posted by tiago - 2007/07/30 14:53
_____________________________________
Viva!
imagina a seguinte função:
include( $_GET . ".php" );
eu coloco num servidor que não interprete PHP o ficheiro ola.php com o seguinte código:
<?php
echo "ola";
?>
se eu colocar no url apenas: modulo=http://omeusite.com/ola
o include em cima referido vai completar a variavel "$_GET" com:
http://omeusite.com/ola.php
o basename serve apenas para garantir que a variavel modulo vai ter únicamente o nome do ficheiro, e não coisas
estranhas como: "../../ficheiro"...
Se precisares de mais exemplos, diz... :)
Abraços,
Tiago Lopes
============================================================================
Re:Dúvida, estrutura
Posted by mAiN_iNfEcTiOn - 2007/09/24 01:56
_____________________________________
if(isset($_GET))
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 1 October, 2016, 03:11
{
$modulo=urlencode($_GET);
}
Mas a funçao urlencode já anula o efeito das "/".
Assim, "../.." ficaria "..%2F.." ao que verificando se existe algum ficheiro com o nome:
"/teste/..%2F...php" ele iria dizer k nao existe :)
Post edited by: mAiN_iNfEcTiOn, at: 2007/09/24 01:59
============================================================================
Re:Dúvida, estrutura
Posted by miguelp - 2007/09/28 13:07
_____________________________________
caros algum de voçês ja ouviu falar de URI components?
vejamos algo tipo:
www.teste.com/index.php?modulo=news
transforma-se em algo tipo
www.teste.com/index.php/news
com um pequeno ficheiro .htaccess ainda fica melhor
www.teste.com/news
para pegar no modulo podemos no index principal usar algo tipo:
define('APP_MODULES','modulos/');
include(APP_MODULES . uri->segment(1) . '.php');
mas tudo isto ainda pode ser implementado de forma diferente, aqui ficam algumas ideias:
http://brunotorres.net/urls
http://brunotorres.net/urls-again
divirtam-se :P
Post edited by: miguelp, at: 2007/09/28 13:20
============================================================================
Re:Dúvida, estrutura
Posted by mAiN_iNfEcTiOn - 2007/09/29 11:47
_____________________________________
Não querendo desfazer o teu post miguelp, acho que isso não vem ao caso....
Aliás, o propósito da segmentação do endereço é puramente estratégico... É certo que fica muito bonito e coisa e tal.. Mas
a ideia principal da segmentação é não dar a conhecer os directórios (pelo menos, pela maneira mais óbvia) contidos no
alojamento.
Organiza o código, em parte, pois sabes sempre qual o segmento que traz informação.
Mas, sendo sincero, o único momento onde usei segmentação de URI's foi no Code-Igniter...
(Mais uma vez, nao desfazendo o teu post, que acho BASTANTE interessante e estou a investigar mais sobre o
assunto)
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 1 October, 2016, 03:11
Qualquer blasfémia, heresia ou demais pecados que tenha efectuado neste post, tenham em atenção que sou ateu. :D E
acordei agora, portanto estou de mau humor!
============================================================================
PHP-PT.com Forum - Comunidade Portuguesa de PHP
Joomlaboard Forum Component version: 1.1.4 Stable
Generated: 1 October, 2016, 03:11

Documentos relacionados