extends

Permite classes com variáveis e funções similares a uma outra classe . De fato , é uma boa prática definir classes genéricas que podem ser utilizadas em todos os seus projetos , e adaptar essas classes com as necessidades específicas de cada projeto . Para facilitar isso , classes podem ser extensões de outras classes . A classe estendida ou derivada tem todas as variáveis e funções da classe base ( isto é chamado herança , afora o fato que ninguém morreu ) e mais aquelas que venha a acrescentar na versão estendida . Não é possível subtrair uma classe , ou seja , indefinir quaisquer funções ou variáveis existentes . Uma classe estendida é sempre dependente de uma única classe base , e portanto , herança múltipla não é suportada . Classes são estendidas utilizando a instrução ' extends ' .

 
class

 
CarrinhoDeComprasNomeado

 
extends

 
CarrinhoDeCompras

 
{

 
var

 
$proprietario

 
;

 
function

 
set_proprietario

 
($name

 
)

 
    {

 
$this

 
-

 
proprietario

 
=

 
$name

 
;

 
    }

 
}



Isto define uma classe chamada CarrinhoDeComprasNomeado que tem todas as variáveis e funções de CarrinhoDeCompras mais a variável $proprietario e uma função set_proprietario( ) . Você pode criar um carrinho nomeado da maneira usual e configurar e obter o proprietário do carrinho . Você ainda pode continuar utilizando carrinhos normais e carrinhos nomeados :

 
$ncart

 
=

 
new

 
CarrinhoDeComprasNomeado

 
;

 
$ncart

 
-

 
set_proprietario("kris")

 
;

 
print

 
$ncart

 
-

 
proprietario

 
;

 
$ncart

 
-

 
add_item("10"

 
,

 
1)

 
;

 
/

 
/

 
(funcionalidade

 
herdade

 
do

 
CarrinhoDeCompras

 
)



Isto é chamado relacionamento " pai-filho " . Você cria uma classe pai e utiliza extends para criar uma nova classe baseada na classe pai : sua classe filha . Você ainda pode criar uma nova classe estendida a partir dessa classe filha e assim por diante .

Nota : As classes precisam ser definidas antes de serem utilizadas ! Se você estender a classe CarrinhoDeComprasNomeado da classe CarrinhoDeCompras , você precisa antes criar a classe chamada CarrinhoDeCompras . Se você quiser criar uma outra classe chamada CarrinhoDeComprasNomeadoAmarelo baseada na classe CarrinhoDeComprasNomeado você tem que definir CarrinhoDeComprasNomeado primeiro . Trocando em miúdos : a ordem em que as classes são definidas é importante .