Objota O mundo orientado a objetos

Utilizando arrays em classes

Posted on julho 21, 2010

Posted by Rodrigo Ireno

Olá, para quem já tem acompanhado meus artigos sobre php deve ter visto o último arrays e matrizes em php que mostrava como utilizar arrays em php. Neste artigo quero mostrar um exemplo prático com arrays em php em uma classe. Vendo todos os métodos de iteração.

Iteração

Este termo é usado para designar uma busca em um array. Quando digo que se deve iterar por um array, quer dizer que devo percorrer este array até encontrar algum valor ou algo assim. Para iterar por um array é preciso fazer uso de algum tipo de loop. Para não ficar nenhuma dúvida vou demonstrar como iterar por um array com diversos tipos de loop. Tudo isso dentro do paradigma de orientação a objetos.

Teremos neste artigo dois objetos. O objeto contato e o objeto agenda, que não passa de uma lista de contatos. Eis a primeira classe:

Contato


class Contato{
	private $nome;
	private $telefone;
	private $email;

	public function Contato($nome, $telefone, $email){
		$this->nome = $nome;
		$this->telefone = $telefone;
		$this->email = $email;
	}

	public function setNome($novoNome){
		$this->nome = $novoNome;
	}
	public function setTelefone($novoTelefone){
		$this->telefone = $novoTelefone;
	}
	public function setEmail($novoEmail){
		$this->email = $novoEmail;
	}

	public function getNome(){
		return $this->nome;
	}
	public function getTelefone(){
		return $this->telefone;
	}
	public function getEmail(){
		return	$this->email;
	}
}

A classe acima tem por objetivo representar a entidade lógica contato com todos os atributos relevantes ao nosso escopo. Vejamos adiante a classe Agenda:

Agenda


class Agenda{

	// Um array com objetos do tipo Contato
	private $contatos;

	public function Agenda(){
		$contatos = array();
	}

	//Adiciona contatos a lista
	public function addContato($novoObjetoContato){
		$this->contatos[] = $novoObjetoContato;
	}

	//Mostra todos os contatos com foreach
	public function mostraContatos1(){
	 	foreach($this->contatos as $obj){
	 		echo "Nome: {$obj->getNome()}<br/>
	 			  Telefone: {$obj->getTelefone()}<br/>
	 			  Email: {$obj->getEmail()}<br/>
	 			  -----------------<br/>";
	 	}
	}

	//Mostra todos os contatos com for
	public function mostraContatos2(){
	 	for($i=0;$i < count($this->contatos);$i++){
	 		$obj = $this->contatos[$i];

	 		echo "Nome: {$obj->getNome()}<br/>
	 			  Telefone: {$obj->getTelefone()}<br/>
	 			  Email: {$obj->getEmail()}<br/>
	 			  -----------------<br/>";
	 	}
	}

	//Mostra todos os contatos com while
	public function mostraContatos3(){
		$i = 0;
	 	while($i < count($this->contatos)){
	 		$obj = $this->contatos[$i];

	 		echo "Nome: {$obj->getNome()}<br/>
	 			  Telefone: {$obj->getTelefone()}<br/>
	 			  Email: {$obj->getEmail()}<br/>
	 			  -----------------<br/>";
	 		$i++;
	 	}
	}

	//Mostra todos os contatos com 'do while'
	public function mostraContatos4(){
		$i = 0;
	 	do{
	 		$obj = $this->contatos[$i];

	 		echo "Nome: {$obj->getNome()}<br/>
	 			  Telefone: {$obj->getTelefone()}<br/>
	 			  Email: {$obj->getEmail()}<br/>
	 			  -----------------<br/>";
	 		$i++;
	 	}while($i < count($this->contatos));
	}
}


Veja como iteramos pelo array. O foreach sempre itera por todo o array. Já com os outros tipos de loop posso ter mais controle sobre a iteração. Outra observação a fazer é o método nativo do php count() que retorna um número inteiro, referente ao número de elementos dentro do array.

Depois de feitas estas duas classes, vamos juntar tudo isso em um único arquivo php e executar para ver o que acontece. Copie as duas classes e cole uma e depois a outra. Depois das duas classes. Adicione este código, abaixo, (tudo entre tags php, lógico):


$obj = new Agenda();

// Instancio dois contatos
$contato1 = new Contato("Rodrigo","11-2222-5555","rodrigo@objota.com.br");
$contato2 = new Contato("objota","22-5555-1111","objota@objota.com.br");

// adiciono estes a minha lista
$obj->addContato($contato1);
$obj->addContato($contato2);

$obj->mostraContatos4();


Neste código é feita a inicialização do objeto Agenda e adicionados dois contatos. Após isso utilizamos o método mostraContatos() para mostrar todos os contatos já adicionados.

Repare que tão importante quanto utilizar métodos de iteração por arrays, vimos também um bom exemplo de orientação a objetos. Construímos duas classes, sendo que um objeto utiliza o outro. Todos em conjunto formam uma agenda.

obs: O loop mais rápido é o for, só uma dica! 🙂

Teste o arquivo e veja o resultado. Este artigo fica por aqui, até a próxima e bom aprendizado!

No próximo post vamos falar de conexão com o banco de dados! até!

Arrays e Matrizes em php

Posted on julho 17, 2010

Posted by Rodrigo Ireno

Arrays em php

Olá, neste artigo vou falar um pouco sobre array em php. Como utilizá-lo, para que serve e etc. Mas.. o que é um array?

Array é uma coleção de valores armazenada em uma única variável. Até agora vimos que é possível armazenar valores numéricos e caracteres em uma variável. Utilizando um array, é possível armazenar vários tipos de valores em uma única variável. Veja um exemplo abaixo:


<?php

	//Uma variável comum

	$valor = 123;
	$valor = "Objota";

	//Um array

	$valor = array(123,"Objota");

?>

Para recuperar um valor específico do array é preciso fornecer um índice. Este índice geralmente é um valor numérico, porém em arrays associativos, também se usa caracteres. Vejamos o segundo exemplo:


<?php
	//Um array

	$valor = array(123,"Objota");

	//A linha abaixo imprime na tela o valor "123"

	echo $valor[0];

?>

Como pudemos ver no exemplo acima, o índice inicia sua contagem a partir do zero. Como temos dois elementos no array (123 e “Objota”) temos os índices 0 e 1 acessíveis.

Arrays Associativos

Em geral todo array é associativo. No exemplo anterior o índice zero está associado ao primeiro item do array. Por omissão o php considera que o índice é um número, porém é possível declarar como será este índice. Vejamos abaixo.


<?php
	//Sem declarar o nome da chave ou índice

	$valor = array(123,"Objota");

	//Por omissão é determinado um número como índice ou chave

	echo $valor[0];

	//Declarando o nome da chave

	$valor = array("primeiro" => 123, "segundo" => "Objota");

	//Imprime "123" na tela

	echo $valor["primeiro"];

?>

Matrizes com combinações de array

Na própria matemática e em muitos sistemas, e muitos tipos de cálculo é necessário o uso de matrizes. Uma matriz  é um conjunto de linhas e colunas. Vejamos um exemplo abaixo:


<?php
	//Eis um exemplo de um matriz 3x3 (três linhas por três colunas)

	$Matriz = array(array(59,56,47),
			     array(85,57,73),
			     array(15,23,32));

	// A linha abaixo imprime 23 na tela

	//veja a referência, terceira coluna e linha 2

	//Lembrando que a contagem do índice começa do zero!

	// Neste formato o primeiro colchete define a coluna
	// e o segundo colchete define a linha
	echo $Matriz[2][1];

?>

Da mesma forma também é possível fazer isso:

<?php

// Uma matriz associativa
$valor = array(
	'Cor'			=> array( 'Vermelho', 'Branco', 'Prata' ),
	'Capacidade'	=> array( '4GB', '8GB', '16GB' ),
	'Interface'		=> array( 'Windows', 'Mac', 'Linux' ),
);

// Esta linha printa 'Vermelho' na tela
echo $valor['Cor'][0];

//Coluna 'cor' e o ítem zero '0' desta coluna

?>

Bom este foi um tutorial simples e direto para esclarecer como utilizar um array. No próximo artigo faremos uma classe para manipular arrays. Com vários tipos de loop. Dúvidas, fiquem a vontade para postar.