PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum PHP Orientado a Ojetos - PHP OO #552477

27/04/2016

0

PHP

Bom dia!

Voltei a estudar sobre PHP OO e agora me surgiu uma dúvida cruel. ("cruel é bom", já dizia Maze Runner, uhasuhashauhs)

Bom, a situação é a seguinte:
Possuo duas classes:
usuario.class.php
<?php

	class Usuario {

 
	private $usuario_id;	 
	private $usuario_email;

	public function __construct(){
		
	}
	
	public function _setUsuario_Id($valor = NULL){
		$this->usuario_id = $valor;
	}

	public function _getUsuario_Id(){
		return $this->usuario_id;
	}

	public function _setUsuario_Email($valor){
		$this->usuario_Email = $valor;
	}

	public function _getUsuarioId(){
		return $this->usuario_Email;
	}

	public function __destruct(){
		
	}	
	
}
 
?>




chamado.class.php
<?php
	require_once('usuario.class.php');
	
	class Chamado {
 
		private $chamado_id;	 
		private $chamado_titulo;	 
		private $chamado_data_criacao;	 
		private $chamado_data_conclusao;	 
		private $autor;                 //É um Usuario
		private $responsavel;      //É um Usuario
		private $participantes;     //É um Usuario	 
	 
		public function __construct(){
			$usuario = new Usuario();
			$this-participantes = [];
		}
		
		public function _setChamado_Id($valor = NULL){
			$this->chamado_id = $valor;
		}

		public function _getChamado_Id(){
			return $this->chamado_id;
		}
		 
		public function _setChamado_Titulo($valor){
			$this->chamado_titulo = $valor;
		}

		public function _getChamado_Titulo(){
			return $this->chamado_titulo;
		}
		 
		public function _setChamado_Data_Criacao($valor){
			$this->chamado_data_criacao = $valor;
		}

		public function _getChamado_Data_Criacao(){
			return $this->chamado_data_criacao;
		}
		 
		public function _setChamado_Data_Conclusao($valor){
			$this->chamado_data_conclusao = $valor;
		}

		public function _getChamado_Data_Conclusao(){
			return $this->chamado_data_conclusao;
		}

/** A dúvida é sobre como eu devo fazer para "ligar" um usuário ao autor, ao responsável e aos participantes **/
		public function _addAutor($Obj){
			
			$this->autor = $Obj;
		}

		public function _listAutor(){
			return $this->responsavel;
		}

		public function _addResponsavel($Obj){
			$this->responsavel = $Obj;
		}
		
		public function _listResponsavel(){
			return $this->autor;
               }

		public function _addResponsavel($Obj){
			$this->responsavel = $Obj;

		}
		
		public function _addParticipantes($Obj){
			$this->participantes = $Obj;
		}

		public function _listParticipantes(){
			return $this->participantes;
		}
		
		public function __destruct(){
			
		}	 
	 
	}
 
?>



Minha dúvida são as seguintes:

1. Entendo que "Usuario" não pode ser uma extensão de "Chamado", pois um chamado possui um usuário. (ele não é um tipo de usuário). É correto afirmar isso?;
2. Tenho dúvida sobre como "adicionar" os atributos que são objetos da outra classe (Usuario). Entendo que preciso de classes para fazer esse intermédio, mas gostaria de entender a essência disso.
Por exemplo:

Para adicionar o meu responsavel eu faria assim?:
/** Através de uma classe auxiliar, monto uma lista de usuários para ser escolhido um(objeto). 
Então a pessoa que está abrindo o chamado escolhe o usuário desejado, por exemplo(id,email): $Obj [12, mariazinha@email.com] ***/
		public function _addResponsavel($Obj){

			$this->responsavel = $Obj;
		}




Nesse momento eu tenho um objeto Responsavel que é do tipo Usuario. Para persistir no banco, eu vou utilizar apenas o $Obj->_getUsuario_Id();
E da mesma forma eu faria com o restante dos objetos do tipo Usuario.

Está certo (em termos de padrão) fazer dessa forma? Imagino que isso vá funcionar, mas minha preocupação é com a qualidade do código.
Lembrando que sei que existem muitas outras etapas antes de persistir no banco, mas eu preciso primeiro entender como montar meus objetos.

Eu li diversos tutoriais e explicações sobre orientação a objetos com PHP na internet e confesso que fiquei impressionado com a quantidade de "coisas" que são ensinadas.

Estou iniciando na programação e gostaria da ajuda do fórum para começar da forma correta.

Muito obrigado mais uma vez! (e desculpa se o código ficar todo numa única linha. Juro que tentei deixar ele indentado, mas não descobri como.)
Jaquisson

Jaquisson

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar