Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ScornInPC

Algumas considerações ao programar em PHP

Recommended Posts

Olá imasters,

 

Vim aqui hoje postar um artigo que escrevi sobre algumas técnicas (melhores ou não) que facilitam na velocidade da

 

programação, ou simplesmente deixam o código mais limpo.

Gostaria de deixar claro, que todas as dicas no artigo, não tecnicas usadas por mim, e não são padrão nenhum, e

 

talvez não seja a melhor forma, mas deixo aberto para uma discussão saudavel.

 

 

- Algumas considerações

Sei que com este artigo, não vou conseguir mostrar e fazer o pessoal migrar completamente ao PHP 5. Mas, é necessário, gostaria que o pessoal que estivesse aprendendo agora, utilizassem o poder da orientação objeto, utilizassem mais a rica documentação (online ou não) da linguagem.

Digo isso, por que não é muito raro, ver posts com $HTTP_GET_VARS, ou não usar nada disso. Não é raro ver pessoas não definindo constantes, criando scripts complexos, sem precisar.

Primeiramente, sempre é bem-vindo, uma verificação de parâmetros

 

if(isset($_GET['nome'])) {
	$nome = $_GET['nome'];
} else {
	$nome = NULL;
}

O mesmo vale para os métodos POST, FILES e outros.

Este é um dos maiores problemas de migração de servidores, ja que eles mostram mensagens de warnning, quando as variaveis não estão definidas. E aproveitando o mesmo script, largamos para traz o metodo $HTTP_GET_VARS, trazendo o $_GET.

Outra coisa, que ficaria difícil explicar em um pequeno artigo como esse, seria a orientação objeto, nada complexo, mas pelo menos usar o conceito objeto.

 

 

- Identação e PHP dentro de HTML

É de extrema importância uma boa identação, tanto na parte do PHP, quando no HTML. Um exemplo pode ser visto:

 

Exemplo I

<html>
	<head>
	</head>
	<body>
<?php
	if($LOGADO) {
?>
		<table>
			<tr>
				<td>
<?php
					echo $USUARIO;
?>
				</td>
				<td>
					Seja bem vindo novamente.
				</td>
			</tr>
		</table>
<?php	
	} else {
?>
		<table>
			<tr>
				<td>
					Sai fora ô
				</td>
			</tr>
		</table>
<?php
	}
?>
	</body>
</html>

Exemplo II

<html>
<head>
</head>
<body>
<?php
if($LOGADO) {
?>
<table>
<tr>
<td>
<?php
echo $USUARIO;
?>
</td>
<td>
Seja bem vindo novamente.
</td>
</tr>
</table>
<?php	
} else {
?>
<table>
<tr>
<td>
Sai fora ô
</td>
</tr>
</table>
<?php
}
?>
</body>
</html>

No exemplo I, alem de ficar simples a leitura, quando o script for executado, no codigo fonte da pagina, o html

ficará bem legivel.

 

 

- Identação e HTML dentro de PHP

Precisamos sempre manter nosso HTML identado, precisamos então, tomar alguns cuidados, como as quebras de linha

 

Exemplo I

<html>
	<head>
	</head>
	<body>
<?php
	if($LOGADO) {
		echo "
		<table>
			<tr>
				<td>
".
					$USUARIO
				."
				</td>
				<td>
					Seja bem vindo novamente.
				</td>
			</tr>
		</table>
";
	} else {
		echo "
		<table>
			<tr>
				<td>
					Sai fora ô
				</td>
			</tr>
		</table>
";
	}
?>
	</body>
</html>

Exemplo II

<html>
	<head>
	</head>
	<body>
<?php
	if($LOGADO) {
		echo "<table>
			<tr>
				<td>" . $USUARIO . "</td>
				<td>Seja bem vindo novamente.</td>
			</tr>
		</table>";
	} else {
		echo "<table>
			<tr>
				<td>Sai fora ô</td>
			</tr>
		</table>";
	}
?>
	</body>
</html>

 

- printf() e um pouco mais de identação

Em exemplos pequenos como esses, talvez seja difícil perceber a diferença, mas quando trabalhamos com formulários e

JavaScript, talvez fique complicado achar um problema, fazendo-nos recorrermos à saida do código no browser, e

imagina achar um erro em algo complexo. Vou citar mais um exemplo, de como eu faço quando preciso mostrar saidas de

repetições.

 

Exemplo I

<html>
	<head>
	</head>
	<body>
		<table>
			<tr>
<?php
			while ($linha = mysql_fetch_array($res) {
				print ("
				<td>
					<a href=\"editar.php?id=%d\">%s</a>
				</td>
", $linha['id'], $linha['nome']);
			}
?>
			</tr>
		</table>
	</body>
</html>

Exemplo II

<html>
	<head>
	</head>
	<body>
		<table>
			<tr>
<?php
	while ($linha = mysql_fetch_array($res) {
		echo "<td><a href=\"editar.php?id=" . $linha['id'] . "\">" . $linha['nome'] . "</a></td>";
	}
?>
			</tr>
		</table>
	</body>
</html>

Nestes exemplos, fica mais fácil mostrar a dificuldade de uma leitura de código, ja que no exemplo II, é quase

impossível compreender o que o echo faz, só de "bater o olho".

Execute os script acima, e veja o código fonte gerado, e perceba a diferença.

 

 

- Arquivos de inicialização e configuração

Geralmente, em nossos scripts, precisamos criar constantes, variáveis globais, incluir classes, e varias outras

coisas. Quando o script é muito grande, muitas vezes nos perdemos ao meio de tantas variáveis, constantes e classes.

Uma dica, é criar um arquivo de configuração, geralmente chamado config.php, mais ou mesmo com o seguinte formato.

 

<?php
$banco = array();
$banco['servidor']	=	'localhost';
$banco['usuario']	=	'root';
$banco['senha']		=	'senha';
$banco['nome']		=	'artigo';

$upload	= array();
$upload['caminho']	=	'fotos/';
$upload['tamanho']	=	500;

if
?>

Costumo iniciar minhas variáveis sempre que possível, ja que sou acostumado à programar em outras linguagens, mas o

array() não é obrigatório.

Tendo nosso arquivo de configuração, crio sempre um arquivo de inicialização, geralmente chamado init.php, com o

seguinte formato.

 

<?php
	/*
	 * Definição dos erros
	 */
	set_ini('display_errors', true);error_reporting(E_ALL | E_STRICT);
	ini_set('display_errors', true);
	

	/*
	 * Definição da codificação
	 */
	header("Content-Type: text/html; charset=UTF-8", true);
	
	/*
	 * Verifica a existencia do arquivo de configuração
	 */
	if(!file_exists("config.php")) {
		die("Impossivel encontrar o arquivo de configuração");
	}
	require_once("config.php");
	
	/*
	 * Verifica e incluir outras classes e arquivos
	 */
	if(!file_exists("....php")) {
		die("Impossivel encontrar o arquivo de ...");
	}
	require_once("....php");
	
	/*
	 * Define as constantes do banco de dados
	 */
	if(!defined("BD_SERVIDOR")) {
		define("BD_SERVIDOR", $banco['servidor']);
	}
	if(!defined("BD_USUARIO")) {
		define("BD_USUARIO", $banco['usuario']);
	}
	if(!defined("BD_SENHA")) {
		define("BD_SENHA", $banco['senha']);
	}
	if(!defined("BD_NOME")) {
		define("BD_NOME", $banco['nome']);
	}
	if(!defined("UPLOAD_CAMINHO")) {
		define("UPLOAD_CAMINHO", $upload['caminho']);
	}
	if(!defined("UPLOAD_TAMANHO")) {
		define("UPLOAD_TAMANHO", $upload['tamanho']);
	}
?>

Se voce trabalha com skins, arquivos de linguagens, erros pré-definidos, e muitas outras coisas, este arquivo

facilita muito. É neste arquivo que ficará todas as coisas que os scripts utilizarão

Algumas vezes, me deparei com alguns dizendo que o script não precisaria toda hora ficar carregando classes, ou

constantes que não fossem utilizadas, mas eu particularmente, não acho isso um problema, já que um script de 14k

seria lido pelo interpretador quase instantaneamente.

 

Templates

Vejo sempre pessoas se matando por causa de templates, mas, ja pensou em passar por parâmetro qual pagina o usuário

quer ver?

Pensando em algo assim:

 

<html>
	<head>
	</head>
	<body>
		<table>
			<tr>
				<td>Cabeçalho</td>
			</tr>
			<tr>
				<td>
					<table>
						<tr>
							<td>Menu</td>
							<td>Conteudo</td>
						</tr>
					</table>
				</td>
			</tr>
			<tr>
				<td>Rodape</td>
			</tr>
		</table>
	</body>
</html>

Tendo o template em mãos, podemos fazer nosso conteudo dinamico, assim:

 

<?php
	require_once('init.php');
	
	/*
	 * Se o parametro $_GET['pagina'] estiver 
	 * definido, pega o arquivo à incluir
	 */
	if(isset($_GET['pagina'])) {
		switch($_GET['pagina']) {
			case 'inicio':
				$pagina = 'index.php';
				break;
			case 'clientes':
				$pagina = 'clientes.php';
				break;
			default:
				$pagina = '404.php';
		}
	} else {
		/*
		 * Se o parametro $_GET['pagina'] não existir
		 * o usuario digitou, por exemplo, http://meusite.com.br/
		 * então o site deve mostrar o index.php
		 */
		$pagina = 'index.php';
	}
?>
<html>
	<head>
	</head>
	<body>
		<table>
			<tr>
				<td>Cabeçalho</td>
			</tr>
			<tr>
				<td>
					<table>
						<tr>
							<td>
								<a href="?pagina=inicio">Inicio</a><br />
								<a href="?pagina=clientes">Clientes</a>
							</td>
							<td>
<!-- Conteudo incluso -->
<?php
							include($pagina);
?>
<!-- Conteudo incluso -->
							</td>
						</tr>
					</table>
				</td>
			</tr>
			<tr>
				<td>Rodape</td>
			</tr>
		</table>
	</body>
</html>

Bem, é isso pessoal, duvidas ou alguns problemas, só postar que eu escrevo mais sobre o assunto =)

 

 

 

Editado: v0.2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Interessante e, com certeza, além de técnicas e praticas, entra a questão do habito, programar com clareza e de forma organizada trás praticidade ao manusear o código. Tomar isso como hábito é necessário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa, Scorn!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Não é $HTTP_VARS_GET, mas, sim, $HTTP_GET_VARS, mas isso não importa, pois ela já não deve ser usada desde o PHP 4. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

É horrível ver scripts com identação mal feita. Espero que todos agora comecem a deixar os scripts legíveis e organizados. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

uaeuaheuhae beraldo, pra você ver como é antigo =), vou trocar la entaum =)

 

valeu pelos comentarios ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.