Ir para conteúdo

POWERED BY:

Arquivado

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

Jefferson NF

[Resolvido] Associação entre classes

Recommended Posts

Pessoal como declaro uma associação simples numa classe PHP?

 

Como venho do java, estou acotumado a fazer isso: private Usuario usuario;

No PHP isso: private Usuario $usuario funciona? Acho que não né?

Como posso declarar na minha classe Noticia um atributo do tipo Usuario?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então jefferson-nf, php é meio liberal quanto estas partes, você não precisa declarar que aquela variavel é de tipo primitivo ou tipo de objeto. Na declaração dos métodos não é obrigatório declarar tipo de retorno.

 

O máximo que eu já vi ser usado, é o casting:

 


$var = (int) $outracoisa;

e este tipo de declaração:

 


public function metodo(Usuario $usuario){

}

Bom, pra você que está vindo do java. saiba que o php só tem "recursos" de orientação a objetos, por tanto, nem tudo vai ser igual ao java.

visibilidade por exemplo funciona legal:

private, public, protected. outras.. static..

 

bom é isso, espero ter ajudado. http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

No PHP isso: private Usuario $usuario funciona? Acho que não né?

 

Claro que funciona.

 

http://forum.imasters.com.br/public/style_emoticons/default/seta.gif PHP Orientado a Objetos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como posso declarar na minha classe Noticia um atributo do tipo Usuario?

 

 

você pode ter uma classe Usuario, com todos os atributos necessários, e seus Get e Set da vida...

e na classe Noticia você extende à essa classe..

 

 

tipo:

 

class Usuario{

	var $IdUsuario;
	var $Nome;

	//IdUsuario
	public function getIdusuario(){
		return $this -> IdUsuario
	}	
	public function setIdUsuario($valor){
		$this -> IdUsuario= $valor;	
	}
	
	//Nome
	public function getNome(){
		return $this -> Nome;
	}	
	public function setNome($valor){
		$this -> Nome = $valor;	
	}
}

class Noticia extends Usuario{

	var id = $this->getIdUsuario();
	var nome = $this->getNome();

}

Aí na Noticia.. você usa tipo: $this->getNomeUsuario() ... e assim por diante...

É lógico que no exemplo que dei, no lugar de você criar uma variável pra receber o que está no atributo da classe Usuario, você poderia usá-lo direto... mas acho q deu pra entender

Compartilhar este post


Link para o post
Compartilhar em outros sites

João, não achei exatamente o que eu queria no link que você me enviou.

 

Então eu posso fazer esse tipo de declaração:

 

private Usuario $usuario;

E meus Sets e Gets ficaram assim:

public function setUsuario(Usuario $usuario)
{
     $this->usuario = $usuario;
}

public function getUsuario()
{
     return $this->usuario;
}

Seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites
class Teste {
private $usuario;

public function setUsuario( Usuario $usuario ) {
	$this->usuario = $usuario;
}

public function getUsuario() {
	return $this->usuario;
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, nesse tópico específico eu falo sobre isso http://forum.imasters.com.br/public/style_emoticons/default/seta.gif 1.4.1 Métodos de Interface e Polimorfismo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah tah, por isso não achei, estava procurando por exemplo onde aparecesse

private Classe $atributo
.

Depois eu posso acessar aos dados da classe usuario normalmente? Por exemplo:

<?
$noticia = new Noticia();
echo $noticia->getUsuario->getNome();
?>

Isso funciona tambem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, encadeamendo e fluent interfaces são possíveis também:

 

<?php
class User {
private $name;

public function __construct( $name ){
	$this->name = $name;
}

public function showName(){
	var_dump( $this->name );
}
}

class Test {
private $user;

public function __construct( User $user ){
	$this->user = $user;
}

public function showUserName(){
	$this->user->showName();

	return $this;
}
}

$test = new Test( new User( 'João Batista Neto' ) );

$test->showUserName()->showUserName()->showUserName();

 

Saída:

string(18) "João Batista Neto"
string(18) "João Batista Neto"
string(18) "João Batista Neto"

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.