Prós e contras do uso de um arquivo para toda página da Web? [fechadas]

StackOverflow https://stackoverflow.com/questions/121849

  •  02-07-2019
  •  | 
  •  

Pergunta

Eu não sei como devo expressar isso, mas vou dar-lhe uma tentativa.
Eu recentemente comecei a codificação minha carteira em PHP orientado a objeto e eu estou querendo saber se ele está de acordo com as melhores práticas para usar uma única página onde o conteúdo muda dependendo de dados SQL ea variável $ _GET?

Se sim / não, porquê?

Edit:. Dê uma olhada no meu próximo post, mais detalhes em profundidade

Foi útil?

Solução

Você está perguntando sobre como usar o padrão de controlador de frente, onde um único arquivo serve todos os seus pedidos? Muitas vezes, isso é feito com um index.php e mod_rewrite recebendo todos os pedidos com o resto do URL que está sendo dado a ele como um parâmetro na cadeia de consulta.

http://www.onlamp.com /pub/a/php/2004/07/08/front_controller.html

Eu tenderia a recomendar esse padrão ser usado para aplicações, porque lhe dá um único local para lidar com as coisas como autenticação, e muitas vezes você vai precisar para integrar coisas em um nível mais apertado onde ter novos recursos ser classes que são registrados com o controlador através de algum mecanismo faz muito sentido.

As preocupações sobre os URLs outros têm mencionados não são realmente precisa, porque não há nenhuma relação real entre a estrutura de URL e estrutura de arquivos, a menos que você estiver usando técnicas antigas de construção de sites. Um bom pedaço de apache funcionalidade é baseada no conceito de que arquivo de estrutura / diretório e estrutura de URL são conceitos distintos (módulo apelido, módulo de reescrita, a negociação de conteúdo, assim por diante e assim por diante)

Outras dicas

  • Não escalável
  • Difícil de gerenciar o código
  • Parser tem que analisar tudo
  • Perfect exemplo de cheiro de código
  • Um erro trava todo o seu site

Se você quer dizer uma única página de destino (por exemplo index.php) que, em seguida, usa variáveis ??de sessão etc. descobrir o que necessita de código para ser incluído, então sim, esta é uma técnica frequentemente utilizada.

Edit: e pela acima Quero dizer que Daniel Papasian explica em detalhes em seu excelente post

Se você quer dizer colocar todo o seu HTML, SQL e PHP em um único arquivo, então não, pelos motivos apontados por GateKiller.

O arquivo de página actaul deve conter apenas o que é diferente e foi decorado sobre essa página a partir de uma "página" padrão em seu site (por exemplo, o título da página, a página de índice pode ter código para receber as últimas notícias, etc). Everythin que é (ou pode) ser usado em mais de um lugar, deverá ser transferido para arquivos php externos, e incluídos. Exemplos são:

  • infomation banco de dados (senha, nome de usuário, etc)
  • cabeçalho / rodapé
  • O código de registro

Isso torna o muito easyer código para gerenciar. Por exemplo, se você alterar a senha de banco de dados, o seu único arquivo que precisa ser atualizado, ou se você decidiu adicionar um banner para o cabeçalho, o seu novo apenas uma página não todas as páginas que precisam mudar.

Ele também faz a adição de novos recursos muito menos trabalho, por exemplo, uma nova página pode ser simplesmente:

<?php
require ('config.php')
require ('start.php')
require ('header.php')
//custom page stuff
require ('footer.php')
?>

ou a adição de login automático através de cookies, é uma mudança simples para a função Login () (criando um cookie), e start.php (verificação para o cookie + chamando Login ()).

Além disso, você pode easyily transferir esses arquivos para outros projetos no futuro.

Tudo GateKiller mencionado + você também não pode utilizar a ligação tardia.

  • Difícil de gerenciar o código

Se você estiver usando o controle de versão que vai ser muito mais difícil de reverter as alterações que poderia ter acontecido com uma "página" single do seu site. Desde que você teria que se fundem de volta para qualquer coisa que poderia ter vindo depois

Não é como motor de busca amigável a menos que você usar mod reescrever

I tendem a discordar com a maioria - se o seu site é gerido por um CMS personalizado ou algo semelhante, não há nenhuma razão para não usar uma página.

Eu fiz uma coisa semelhante com um CMS eu escrevi um tempo atrás. Todos os clientes tinham uma única página default.asp que questionaram a base de dados para permissões tema, conteúdo, anexos e membros. Para fazer uma mudança, eu só fez a alteração uma vez, e copiados para os meus outros clientes se a mudança exigia.

Isto, obviamente, não iria funcionar na maioria dos cenários. Se você tem um site que faz um monte de coisas diferentes (meus cms apenas repetiu certas funções durante o carregamento da página), então várias páginas é realmente a única maneira de ir.

Para aqueles de vocês que estão interessados, existe um quadro que utiliza esse modelo exato. Originalmente para o ColdFusion. Há ainda uma comunidade para esta metodologia, a versão 5.5 foi lançado cerca de um ano atrás (Dez 2007).

local caixa de fusíveis Framework

Wikipedia entrada

Esta screendump e a seguinte explicação pode dar uma melhor idéia do que meus olhares de código, como no momento.

File-estrutura

Eu uso o mesmo modelo que aquele que 'Internet Friend', Daniel Papasian e alguns outros mencionar; Front Controller.

minha página índice parece com isso.

require_once 'config.php';
require_once 'class_lib/template.php';

$template = new template($config);
$template->dataQuery();
$template->pageCheck();
$template->titleAssembly();
$template->cssAssembly();
$template->metaAssembly();
$template->menuAssembly();
$template->content();
echo $template->publish();

A construção classe abre o principal arquivo de modelo e carregá-lo em uma variável que cada método pode manipular com substituindo as etiquetas com código gerado. URLs feias não é realmente um problema desde que eu vou estar usando mod_rewrite para limpá-lo.
No entanto, Papasian tem um ponto, este método seria mais adequado para aplicações baseadas na web e afins.

Peço desculpas por não ser muito específico com a minha pergunta, em primeiro lugar.
Além disso, grande 'obrigado' a todos que caiu algumas linhas para ajudar.

Costumo usar um arquivo PHP sem a extensão .php (ou seja, local) e adicione

<Files site>
ForceType application/x-httpd-php 
</Files>

para o .htaccess que torna apache interprete o arquivo como um arquivo PHP.

Você pode analisar vars para o arquivo dentro da url: http: // www. yourdomain.com/site/var1/var2/var3

Use

$var_array = explode("/",$_SERVER['REQUEST_URI']); 
$var1 = $var_array[1];
$var2 = $var_array[2];
$var3 = $var_array[3];

para obter os vars. Desta forma, você pode usar um único arquivo com searchengingfriendlyurls sem modrewrite.

re: URL e estrutura de arquivos

Eu converti um local onde todo o conteúdo estava em um banco de dados e acessados ??com o índice? P = 434 modelo. Não houve benefício de usar o banco de dados, eo site foi confuso para as pessoas que tiveram de adicionar conteúdo, uma vez que teve de editar conteúdo com o navegador e páginas eram apenas números.

Eu puxei todo o conteúdo e colocá-lo em arquivos separados. Cada um tinha um nome sensível e foi organizado em pastas. Cada arquivo parecia algo como isto:

require('sitelib');
do_header('about', 'About Us');
// content here
do_footer();

O cliente adorou. Eles foram capazes de usar qualquer editor de HTML para entrar, encontrar o arquivo certo e fazer a mudança. E eles foram capazes de fazer novas páginas. Tudo para dizer:. Às vezes, é útil ter o URL de arquivos e estruturas corresponder

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top