Estrutura da programação de um portal em PHP

  • Identifique-se para criar novos tópicos neste fórum
  • Visitantes anônimos não podem postar neste fórum
Anônimo    Postagens: 0

Oi pessoal,
Esse tópico será bem complexo, mas espero com ele desenvolver minhas habilidades de programação assim como ajudar aqueles não muito experientes na programação PHP.

Estive pensando em qual seria a melhor maneira para estruturar a programação PHP nos sistemas que desenvolvo nessa linguagem. Olhando para outros sites/sistemas (o próprio XOOPS é um exemplo) vejo pastas chamadas "includes", "kernel", etc. Dentro destas pastas encontram-se arquivos que contém funções, definição de classes e tals. Esses arquivos são utilizados através do famoso include() do PHP.

Então pensei: Como distribuir meu código PHP em arquivos de forma a separar layout da programação e também fazer com que seja fácil alterar partes de código sem alterar outras.
Como fazer minha programação de forma que eu possa alterar o layout das páginas sem correr o risco de estragar a programação.

De inicio pensei na seguinte estrutura:

Pasta "includes" contendo:
-> functions.php (definição de todas as funções utilizadas)

Pasta "kernel" contendo:
-> classes.php (arquivo contendo definição das classes)

Pasta "images" contendo:
-> armazena todas as imagens utilizadas no site.

Na raiz, os seguintes arquivos:
-> index.php (óbvio)
-> header.php (cabeçalho de todas as páginas do site)
-> footer.php (rodapé de todas as páginas do site)
-> demais_arquivos.php

Todos os arquivos .php (com exeção de header.php e footer.php) contém includes no início e no final e teriam a seguinte estrutura básica:

Include_once('header.php');
// conteúdo.
Include_once('footer.php');
?>


Arquivo cabeçalho.php teria algo parecido com:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="styles.css" rel="stylesheet" type="text/css">

<body>


E o footer seria:
</body>
</html>


Agora, para os que leram até aqui e se interessaram pelo tópico, me digam o que acham desse esquema. Mandem sugestões ou até mesmo links que nos permitam estudar e desenvolver da melhor maneira possível nossos códigos!

[]'s!

Anônimo    Postagens: 0

Oi!
Gostei muito do seu esquema, ele é bem usual, mas eu vi que a sua principal questão é:

Como distribuir meu código PHP em arquivos de forma a separar layout da programação e também fazer com que seja fácil alterar partes de código sem alterar outras.

Isso é intriga muita gente... muitas pessoas se sentem incomodados pelo PHP ser embutido no HTML e sonham em uma solução para esta dúvida. Então, como cada um tem uma opinião diferente, lá vai a minha:
MODELOS!
O esquema que você passou é excelente! Mas mesmo assim separa um pouco o HTML em arquivos... HTML em header.php, em footer.php... Tem aqueles designers que manjam muito de layouts e talz... mas mandam eles acrescentarem um echo que você vai ouvir...rs.
Então, os modelos (Smarty é o que eu gosto), além de não exigirem nenhuma extensão a mais do PHP para nada, não limita a criatividade do programador e nem do Designer.
Resumindo, a sua ideia é boa... organização, classes e funções..., mas somando com a maravilha que os modelos representam resulta em ...:

Anônimo    Postagens: 0

E como os modelos se integram com o PHP? Como funciona?
Eu imagino que seja algo do tipo:

Você tem um modelo que nada mais é que um arquivo com cóodigos HTML dentro. Só que, entre o código HTML você utiliza strings para serem substituidas na hora da execução. Então você "lê" o modelo e substitui as strings necessárias e ecoa o resultado?

Ex. para o titulo da página:

Modelo.htm:

<head><title>__$$$PAGE-TITLE$$$__</title>


NA PROGRAMAÇAO:
$modelo = file_get_contents("modelo.htm");
$modelo = str_replace("__$$$PAGE-TITLE$$$__", "Teste PHP", $modelo);


Algo semelhante?

Ah, e outra, onde posso obter mais detalhes sobre esse smarty?

Vlw!

Anônimo    Postagens: 0

Fala swift!
Dê uma boa estudada que isso vai resolver muitos dos seus problemas:
https://xoops.net.br/docs/smarty/manual/
Para estudar o Smarty que vem junto com seu XOOPS acesse o diretório class\smarty.

E como os modelos se integram com o PHP? Como funciona?

O Smarty é uma ferramenta de modelos que se integra ao restante de seu portal via include mesmo e instanciando-o... como o endereço que eu passei acima é em português , não tem muito o que falar aqui, só vou adiantando para que você saiba:

O que é Smarty?
Smarty uma ferramenta de modelo para PHP. Mais especificamente, ela facilita uma forma controivel de separar a aplicação lógica e o conteúdo de sua apresentação. Isto é melhor descrito em uma situação onde o programador da aplicação e o designer do modelo executam diferentes funções, ou na maioria dos casos não são a mesma pessoa.

E sim, ele segue mais ou menos a lógica que você postou, mas é feito em classes e já está todinho pronto para você usar... bastando apenas que você conheça suas funções, modificadores de variáveis, variáveis, etc.

Anônimo    Postagens: 0

Po topet, vlw mesmo cara.
Vou estudar esse smarty!

Alguém mais gostaria de contribuir com alguma informação?

Gilberto Galdino de Oliveira  Membro De: Guarulhos - São Paulo - Brasil  Postagens: 171

swift escreveu:
Po topet, vlw mesmo cara.
Vou estudar esse smarty!

Alguém mais gostaria de contribuir com alguma informação?

Mais?
Orra se nós dominassemos 100% do smarty já era um alivio.
Mas o esquema é este, a utilização intensa de modelos.

Só um detalhe.
Infelizmente se paga um preço alto demais por uma sofisticação e o uso do smarty tipo em um local assim digamos muito simples as vezes num compensa.
Mas a saida da pelo Fernando acho se a mais adequada.

A questão hoje em dia num é mais separar o código do HTML e efeitos (css), isto já é óbvio e evitente a necessidade e obrigatoriedade ao deixar o visual livre para trabalho.
O que estamos buscando hoje é separar o que deve ser processado no servidor com linguagem de script embutida e o que deve ser processado no CLIENTE com script embutido.

Este é na nossa opinião o desafio do momento, mas pensando de novo em uso de classes e reaproveitamento tipo como você está vendo no smarty.


Momento de descontração:

Sobre o cúmulo do egoísta.
Não vou te contar, só eu sei.
Rs

Gilberto Galdino de Oliveira    Postagens: 0

Sim para coisas simples tbm acho que talvez não valha a pena o trabalho. Mas para um iniciante em smarty, nada melhor que as coisas simples para se estudar a tecnologia.

Já até comentei com a adrianinha sobre uma portal simples de estudo PHP que eu estou desenvolvendo nas minhas poucas horas vagas. Será um estudo sobre o tema deste tópico, ou seja, será um estudo-exemplo de como organizar um portal PHP.

Meu maior desafio será utilizar o smarty e os modelos, mas não apenas para deixar o portal deste estudo bonitinho, mas sim estudar seu funcionamento e mostrar isso aos desenvolvedores/intermediários.

Duas coisas que tenho mente para este estudo:
- Mostrar no final de cada página, quais os arquivos foram incluídos utilizando a função include() e quais as constantes definidas. Assim os vivitantes e estudantes poderam saber da onde vem cada parte da página sendo visualizada.
- permitir a visualização do código na íntegra de qualquer um dos arquivos PHP no site, assim como permitir o download dos mesmos para estudar localmente.

Sugestões

Gilberto Galdino de Oliveira    Postagens: 0

Duas coisas que tenho mente para este estudo:
- Mostrar no final de cada página, quais os arquivos foram incluídos utilizando a função include() e quais as constantes definidas. Assim os vivitantes e estudantes poderam saber da onde vem cada parte da página sendo visualizada.
- permitir a visualização do código na íntegra de qualquer um dos arquivos PHP no site, assim como permitir o download dos mesmos para estudar localmente.

Dá para matar 2 coelhos com uma caixa d´água.
Olha um exemplo:
Mastop.com.br/hopihari/
É um script de álbum de fotos com geração de thumbnails em um arquivo apenas. No final do arquivo eu disponibilizo o código-fonte através de um link. Neste caso já mostra o código fonte e os arquivos incluídos, porque é só ver os "include", "require", etc.
Se quiser eu te passo o script usado para mostrar o código-fonte (devidamente coloridinho). É coisa simples.

Gilberto Galdino de Oliveira    Postagens: 0

Se quiser eu te passo o script usado para mostrar o código-fonte (devidamente coloridinho). É coisa simples.

Po eu nem ia mostrar o código coloridinho, mas depois dessa vou querer sim cara! se puder mandar para joao@motoqueiro.com ficaria muito agradicido!

Gilberto Galdino de Oliveira  Membro De: Guarulhos - São Paulo - Brasil  Postagens: 171

Dá para matar 2 coelhos com uma caixa d´água.

Ai, coitadinhos.
Olha um exemplo:
Mastop.com.br/hopihari/
É um script de álbum de fotos com geração de thumbnails em um arquivo apenas. No final do arquivo eu disponibilizo o código-fonte através de um link. Neste caso já mostra o código fonte e os arquivos incluídos, porque é só ver os "include", "require", etc.
Se quiser eu te passo o script usado para mostrar o código-fonte (devidamente coloridinho). É coisa simples.

Tem jeito de colocar em artigos para todos os membros?
Assim fica para todos.
Obrigado...

Gilberto Galdino de Oliveira    Postagens: 0

Novamente matando 2 coelhos com uma caixa d´água só... vou disponibilizar aqui, para quem quiser pegar. Salve o código abaixo em um arquivo chamado codigo.php:



Código PHP

<link href="estilo.css" rel="stylesheet" type="text/css">



// Mastop InfoDigital 2003 - Fernando Santos.
$_SERVER['BASE_PAGE'] = 'codigo.php';

// Usar os seguintes nomes no CSS para colorir o código.
Ini_set('highlight.comment', 'comment');
Ini_set('highlight.default', 'default');
Ini_set('highlight.keyword', 'keyword');
Ini_set('highlight.string', 'string');
Ini_set('highlight.html', 'html');

// Função highlight_php retirada do Site PHP.NET

Function highlight_php($code, $return = FALSE)
{
Ob_start();
Highlight_string($code);
$highlighted = ob_get_contents();
Ob_end_clean();

$highlighted = '
' . str_replace(
Array(
' ',
'
',
'' '
),
Array(
' ',
"
\n",
''  '
),
$highlighted.
) . '
';

If ($return) { return $highlighted; }
Else { echo $highlighted; }
}

// Nenhuma URL Especificada.
If (!isset($_GET['url'])) {
Echo "

Você ainda não especificou nenhuma URL

";
Exit;
}

Echo "

Código do Arquivo: " . htmlentities($_GET['url']) . "

";

// Pega o diretório especificado na URL
$dir = dirname($_GET['url']);

If (!empty($dir) &&!preg_match("!^(\\.|/)$!", $dir)) {

// diretórios válidos - Só mostrará o código do arquivo se o diretório estiver descrito abaixo. Medida de segurança.
$legal_dirs = array(
"/hopihari" => 1,
"/outrapasta" => 1,
);
If ((preg_match("!^/manual/!", $dir) || isset($legal_dirs[$dir])) && strpos($dir, "..") === FALSE) {
$page_name = $_SERVER['DOCUMENT_ROOT'] . $_GET['url'];
} else { $page_name = FALSE; }
} else {
$page_name = $_SERVER['DOCUMENT_ROOT'] . '/' . basename($_GET['url']);
}

// Relatório baseado no arquivo encontrado.
If (!$page_name || @is_dir($page_name)) {
Echo "

Arquivo ou Pasta inválidos

\n";
} elseif (file_exists($page_name)) {
Highlight_php(join("", file($page_name)));
} else {
Echo "

Opa! Este arquivo não existe!

\n";
}
?>
</body>
</html>

Note que você deve ter uma folha de estilo para definir as cores do código fonte (neste meu exemplo ele se chama estilo.css e deve estar no mesmo dir do codigo.php)
No meu exemplo, as cores usadas são estas:
/* ----------Cor do Códifo Fonte PHP----------------- */
Div.phpcode span.html {
Color: brown;
Ground-color: transparent;
}
Div.phpcode span.comment {
Color: #FF8000;
Ground-color: transparent;
}
Div.phpcode span.default {
Color: #0000BB;
Ground-color: transparent;
}
Div.phpcode span.keyword {
Color: #007700;
Ground-color: transparent;
}
Div.phpcode span.string {
Color: #DD0000;
Ground-color: transparent;
}

Depois que estes arquivos estiverem prontos, para mostrar o código fonte basta colocar um endereço assim:

Repare que a variável $url deve receber o caminho completo até o arquivo que quer se mostrar o código a partir do diretório principal do site.
Dúvidas, posteaeeee

Anderson Pimentel  Participativo De: São Paulo - SP - Brasil  Postagens: 122

Interessante esse highlight. Já tinha visto, mas não sabia como fazer.

Obrigado!

Anderson Pimentel    Postagens: 0

Alguém, por gentileza, coloca em um artigo para mim
Tem como ?

Anderson Pimentel    Postagens: 0

topet, no seu caso os arquivos estavao dentro de uma outra pasta. No meu, quero mostrar um arquivo na raiz do portal (o index.php)

Mas quando coloco no endereço codigo.php?url=index.php seu código me retorna mensagem dizendo que o arq não existe.

Tentei criar o diretório hopihari e coloquei o arquivo lá mas tbm não deu. Será que o fato de eu usar server win2k/IIS está dando errado em alguma coisa?

Reparei que $_SERVER["DOCUMENT_ROOT"] não retorna nada aqui... isso deve estar atrapalhando não?

[]'s

Anderson Pimentel 

Qual é a versão do seu php?
Você está testando internamente ou externamente (na internet)?

Anderson Pimentel    Postagens: 0

versão 4.4.0

Estou testando utilizando a URL completa do servidor, porem estou no proprio servidor editando e fazendo os testes.

Anderson Pimentel    Postagens: 0

Bom, eu uso o Win2000 com apache1.3.27 e PHP4.3.0. Quando fui usar este script em minha mákina, vi que dava o mesmo erro que você citou.
Faça o seguinte:
Crie um arquivo PHP com o seguinte conteúdo:

Echo $_SERVER['DOCUMENT_ROOT'];
?>

Salve-o e acesse-o (de preferência no servidor onde você vai usar o script, não internamente).
Diga o que é exibido na tela quando você acessa este arquivo.

Anderson Pimentel    Postagens: 0

Não é exibido nada.

Editei o php.ini o parametro doc_root e setei para "http://nomedoservidor.domain" mas tbm não aparece nada.

Anderson Pimentel    Postagens: 0

muito estranho mesmo.
Olha, a variável $DOCUMENT_ROOT faz a mesma coisa, mas só funciona com o register_globals ativado no php.ini.

Informação retirada de PHP.NET :

Variáveis do servidor: $_SERVER

Nota: Introduzida na versão 4.1.0. Em versões anteriores, use $HTTP_SERVER_VARS.

$_SERVER é um array contendo informações como cabeçalhos, caminhos e localizações do script. Os itens deste array são criados pelo servidor web. Não há garantias que todos os servidores Web geram todas elas: alguns servidores talvez omitam algumas ou geram outras que não estão listadas aqui. Mesmo assim, um grande número dessas variáveis estão de acordo com a especificação CGI 1.1, então você pode esperar encontrá-las nesse array.

Porque será que nem todos os servidores geram esta variável?
Será que seu servidor não gera nada com a superglobal $_SERVER?
Vamos fazer mais um testinho, execute isso:

//DADOS
Echo "DIRETÓRIO RAIZ: $_SERVER[DOCUMENT_ROOT]
";
Echo "CAMINHO DO SCRIPT: $_SERVER[SCRIPT_NAME]
";
Echo "CAMINHO ABSOLUTO DO SCRIPT: $_SERVER[SCRIPT_FILENAME]
";
Echo "IDENTIFICAÇÃO DO SERVIDOR: $_SERVER[SERVER_SOFTWARE]
";
Echo "NOME DO SERVIDOR: $_SERVER[SERVER_NAME]
";
Echo "PORTA SERVIDOR: $_SERVER[SERVER_PORT]
";
?>

De qualquer forma, tem como tu colocar um phpinfo no seu servidor e passar o endereço para vermos?

Anderson Pimentel    Postagens: 0

A resposta aos dados assim como o phpinfo() podem ser vistos em:

http://mesonpi.cat.cbpf.br/estudo/dados.php

Anderson Pimentel    Postagens: 0

Descobri que a variável $_SERVER['DOCUMENT_ROOT'] é uma variável de ambiente do Apache e por isso não funciona no IIS, mas ainda não descobri uma variável que a substitua no IIS.
Uma alternativa para você usar o script que eu postei aí é trocar tudo o que tiver $_SERVER['DOCUMENT_ROOT'] pelo path completo do seu servidor, com todos os diretório até chegar na pasta onde está o seu arquivo PHP. Algo do tipo "c:\inetpub\wwwroot\estudo".
Fique atento na variável $legal_dirs (diretórios válidos), deixe-me lhe dar um exemplo:
Aki no meu micro, a variável global $_SERVER['DOCUMENT_ROOT'] retorna isso: d:/htdocs (este é o meu diretório raiz, logo, eu pode trocar todas as ocorrências de $_SERVER['DOCUMENT_ROOT'] por "d:/htdocs" sem problemas).
O meu script encontra-se em D:\htdocs\Sites\mastop\www , então eu coloque a variável $legal_dirs como "/Sites/mastop/www/hopihari" => 1 daí funcionou para verificar o código fonte dos arquivos dentro da pasta hopihari.
Outra coisa estranha é que no portal do PHP , a última versão para download é a 4.3.4 (ou a 5 beta) e a versão do seu server é 4.4.0-dev... só estranho, mas tente fazer o que falei.

Servidores em que predominam páginas ASP é difícil darem atenção à configurações de PHP...

Anderson Pimentel    Postagens: 0

Outra coisa estranha é que no portal do PHP , a última versão para download é a 4.3.4 (ou a 5 beta) e a versão do seu server é 4.4.0-dev... só estranho, mas tente fazer o que falei.

É estranho mesmo...essa versão já nem está disponivel para download... tudo o que encontrei referente ao 4.4.0 foram bugs:
http://phpbuilder.com/lists/php-developer-list/2002122/0279.php
http://lists.ibiblio.org/pipermail/sm-grimoire/2002-December/001085.html

http://geocrawler.com/archives/3/254/2003/1/0/10305428/
Este último inclui um problema dessa CVS (Versão Corrente do Sistema) como pertencendo ao SO FreeBSD.

Vou continuar procurando mas talvez mudando a versão do PHP para a 4.3 o problema desapareça (afinal deve haver algum motivo para eles porem de lado o 4.4 e saltarem de 4.3 para 4.5).

Anderson Pimentel    Postagens: 0

Vlw topet, vou fazer essa alteração no script.
Mas antes vou ver se mudo a versão para 4.3 e ver se funciona.
Vlw pessoal!

Anderson Pimentel    Postagens: 0

Em casa uso Win XP com PHP 4.3.3
Olha o que diz:

Notice: Undefined index: DOCUMENT_ROOT in c:\inetpub\wwwroot\estudo\codigo.php on line 76

Ele nem reconhece DOCUMENT_ROOT. Já o "estranho" 4.4.0-dev simplesmente ignora... estranho neh?

Acho que o jeito é alterar o script mesmo...

Anderson Pimentel    Postagens: 0

Gostava de poder ajudar mais mas nunca trabalhei com IIS...quer um conselho? Usa apache...open source rullez

Anderson Pimentel    Postagens: 0

Eu estou um disco rígido sobrando aqui e segunda farei uma cópia do SuSE 9. Nesse disco rígido estarei instalando o SuSE, apache, php, mysql, etc.

Tenho que ter contado com Linux e passarei a desenvolver nele. Se alguem souber indicar um editor PHP para Linux ae.
De preferência um que formate o código com cor, tenha autocompletar, essas frescurar ae... mas se não tiver isso basta a cor mesmo...
[]'s

Anderson Pimentel    Postagens: 0

Do yo thing:
http://bluefish.openoffice.nl/download.html

Se esse não agradar dê uma vista de olhos nesta lista: http://phpeditors.linuxup.co.uk/

/edit.

Esses achei por pesquisa, este daqui foi um amigo meu que recomendou NuSphere.
É...ainda estou usando ruindow$

Anderson Pimentel 

É...ainda estou usando ruindow$

Num tem espaço para fazer um dual boot?

Vlw pelas dicas ai!

Anderson Pimentel    Postagens: 0

É...ainda estou usando ruindow$

Num tem espaço para fazer um dual boot?

Vlw pelas dicas ai!

Esse post anterior foi meu...
Esqueci de logar...

Anderson Pimentel    Postagens: 0

Nada quem me dera...pior é que o comp não é só meu, e meu irmão não manja mt disto, se meto Linux sujou.

Estou a pensar começar a usar o knopix, não é do melhor mas smp dá para os gastos... alguém já tentou?

(aproveitando a boleia: se o knopix corre do cd, vai usar apenas a memoria ram para correr certo? logo um AMD a 2.4 256ram não deve ter grandes problemas de free memory para correr né?)

Anderson Pimentel    Postagens: 0

Descobri que a variável $_SERVER['DOCUMENT_ROOT'] é uma variável de ambiente do Apache e por isso não funciona no IIS, mas ainda não descobri uma variável que a substitua no IIS.
Uma alternativa para você usar o script que eu postei aí é trocar tudo o que tiver $_SERVER['DOCUMENT_ROOT'] pelo path completo do seu servidor, com todos os diretório até chegar na pasta onde está o seu arquivo PHP. Algo do tipo "c:\inetpub\wwwroot\estudo".
Fique atento na variável $legal_dirs (diretórios válidos), deixe-me lhe dar um exemplo:
Aki no meu micro, a variável global $_SERVER['DOCUMENT_ROOT'] retorna isso: d:/htdocs (este é o meu diretório raiz, logo, eu pode trocar todas as ocorrências de $_SERVER['DOCUMENT_ROOT'] por "d:/htdocs" sem problemas).
O meu script encontra-se em D:\htdocs\Sites\mastop\www , então eu coloque a variável $legal_dirs como "/Sites/mastop/www/hopihari" => 1 daí funcionou para verificar o código fonte dos arquivos dentro da pasta hopihari.
Outra coisa estranha é que no portal do PHP , a última versão para download é a 4.3.4 (ou a 5 beta) e a versão do seu server é 4.4.0-dev... só estranho, mas tente fazer o que falei.

Servidores em que predominam páginas ASP é difícil darem atenção à configurações de PHP...

Fiz as alterações.
Ele está mostrando o conteúdo do arquivo certinho, só que sem nehuma formatação (tudo na mesma linha) e sem cores.

O endereço para o arquivo de estilo está correto.

Alguma ideia Fernando ?

  Pesquisa avançada






Entrada

Codinome:


Senha:





Perdeu a senha?  |Cadastre-se!


Quem nos visita
Há 29 visitantes neste momento... (14 na seção Fóruns)

Associados: 0
Anônimos: 29

outros...

Banner XOOPS Cube