Programação Especialista

Artigos de Programação em Geral

Herança de classes no PHP

Herança de classes é a coisa mais importante para o aproveitar funcionalidades de uma classe sem a necessidade de reescrever todo o código.
Não sei porque ainda não fiz um artigo sobre isso, que é de extrema importância.

Veremos como estender uma classe reutilizando códigos com facilidade

Para muitos (e para mim) a herança de classes é a melhor coisa que poderiam ter feito. Porque?
Bom, com a herança de classes você pode simplesmente desenvolver uma classe com métodos genéricos e totalmente reutilizáveis... como por exemplo a classe que foi desenvolvida aqui mesmo no blog, a nossa famosa Commons

<?php
class commons{

	function prepare($sql){
		return mysql_real_escape_string($sql);
	}

	function dateDiff($dateIni,$dateEnd)
	{
		$di1 = strtotime($dateIni);
		$di = mktime(0,0,0,date('m',$di1),date('d',$di1),date('Y',$di1));
		$df1 = strtotime($dateEnd);
		$df = mktime(0,0,0,date('m',$df1),date('d',$df1),date('Y',$df1));
		$dias_totais = floor(($df-$di)/86400);
		return $dias_totais+1;
	}

	static  function mergeObject($objs,&$recebedor){
		if(count($objs) >  0 ){
			foreach($objs as $ob){
				$props = get_class_vars(get_class($ob));
				foreach($props as $ind=>$val){
					$recebedor->$ind = $ob->$ind;

				}


			}
		}
	}
}
?>



Agora imaginem ter que copiar e colar estas funcionalidades em todas as suas classes. Agora imaginem se você precisar alterar uma implementação em algum método. Você simplesmente terá que alterar a implementação em todas as suas classes, isso acarretaria um tempo de manutenção muito grande, que poderia ser evitado se utilizasse a herança.

Herança
Herança é um método de agregar funcionalidades de uma classe em outra, tornando-as "uma só", podendo utilizar propriedades e métodos tanto da classe estendida quando da sua classe.

Por definição chamamos a classe que será estendida de Pai e a que vai estendeu de Filha

ou seja a classe Filha estende Pai

Criando uma classe Filha

<?php
class Carro{
	
	protected $marca;
	protected $modelo;
	protected $qtdPortas;
	protected $tipoCombustivel;
	protected $motor;
	protected $partida = 0;

	function ligar(){
		if($this->partida == 1){
			echo "O carro ja esta ligado.";
		}else{
			$this->partida = 1;
			echo "Carro ligado..";
		}
	}


	function abrirPorta(){
		echo "Porta Aberta";

	}

	function fecharPorta(){
		echo "Porta Fechada";
	}

	function desligar(){
		if($this->partida == 0){
			echo "O carro ja esta desligado.";
		}else{
			$this->partida = 0;
			echo "Carro desligado..";
		}
	}
}
?>




Agregando as funcionalidades do Commons na classe Filha

<?php

include(PATH_DO_SEU_DIR.'/Commons.php');
class Carro extends Commons {
	
	protected $marca;
	protected $modelo;
	protected $qtdPortas;
	protected $tipoCombustivel;
	protected $motor;
	protected $partida = 0;

	function ligar(){
		if($this->partida == 1){
			echo "O carro ja esta ligado.";
		}else{
			$this->partida = 1;
			echo "Carro ligado..";
		}
	}


	function abrirPorta(){
		echo "Porta Aberta";

	}

	function fecharPorta(){
		echo "Porta Fechada";
	}

	function desligar(){
		if($this->partida == 0){
			echo "O carro ja esta desligado.";
		}else{
			$this->partida = 0;
			echo "Carro desligado..";
		}
	}
	
	/* Utilizando um metodo do commons */
	function calculaData($ini,$fim){
		$ret = $this->dateDiff($ini,$fim);
	}	
	
	
}
?>

Agrupar propriedades de várias classesIntrodução ao GTK com PHP

Write a comment

New comments have been disabled for this post.