Tópicos avançados em
internet A
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
PHP
Orientação a objetos
Créditos: baseado no material da Profa Beatriz Wilges – SENAC SC
Sumário
Definindo uma classe;
Como criar uma classe;
As palavras-chave private e protected;
Métodos abstratos e interfaces;
A palavra-chave final;
Construtores e destrutores;
Variáveis e métodos estáticos.
Recordando uma função
Agrupamento de código
Representa uma ação
Escopo “local”
function my_func($arg1,$arg2) {
<< function statements >>
}
O que representa uma classe ?
Conceitualmente representa um objeto com
seus métodos e atributos
Definindo uma classe
Como criar uma classe
A sintaxe é a seguinte:
Class nome_classe
{
public var $nome
<atributos>
public function foo(){ ... }
<metodos>
}
Definindo uma classe
Uma classe pode conter várias variáveis e
funções.
Para criar variáveis dentro de uma classe,
usamos a instrução var.
Podemos utilizar $this para referenciar um
Uma classe pode conter várias funções e variáveis.
objeto.
Para criar um objeto de uma determinada
classe utilizamos a instrução new.
Para acessar os atributos e metodos dentro de
uma classe devemos utilizar o símbolo ->
Usar somente um $
$cao->nome e não $cao->$nome
<?php
Class dog
public
public
echo
}
}
?>
Usando uma classe
{
var $nome;
function latir(){
“au au “;
<?php
require(‘dog.class.php’);
$cao = new dog();
$cao->name = ‘Toto’;
echo “{$cao->nome} diz ”;
$puppy->latir();
?>
Programação orientada a objetos no PHP 5
Ocorreu o amadurecimento da linguagem no
que diz respeito à programação orientada a
objetos.
A partir dessa versão o PHP passa a operar
com o Zend Engine 2.0, utilizando um novo
modelo de objetos.
Esse modelo gerou significativos ganhos em
termos de velocidade e performance, porque ele
é mais otimizado e realiza muito menos cópias
redundantes de dados.
As palavras-chave private e protected
Com essas palavras podemos criar métodos ou
variáveis privadas ou protegidas em uma classe.
Uma variável privada só poderá ser acessada
pela própria classe onde ela foi declarada.
Já a variável protegida poderá ser acessada
também pelas subclasses da classe onde ela foi
declarada.
Métodos abstratos e interfaces
É possível criar métodos abstratos. Isto significa
que o método é apenas declarado, mas sua
implementação não é fornecida. Isto será feito
posteriormente em outra classe.
No PHP 5 também temos a possibilidade de criar
interfaces. Nelas, inserimos apenas as declarações
dos métodos que farão parte da classe que irá
implementá-la.
A diferença entre os métodos abstratos e
interfaces é que uma classe pode implementar
diversas interfaces.
Utilizamos a palavra implements para indicar que
uma classe implementa uma determinada interface.
Métodos abstratos
<?php
abstract class ClasseAbstrata {
abstract public function teste( );
}
class ClasseImplementacao extends ClasseAbstrata{
public function teste( ){
echo “Método teste( ) chamado!<br>”;
}
}
$obj = new ClasseImplementacao;
$obj->teste( );
?>
Interfaces
<?php
interface MinhaInterface{
public function Teste();
}
class MinhaClasse implements MinhaInterface{
public function Teste( ){
//...
}
}
?>
A palavra-chave final
Os métodos que forem declarados com a palavra
final não poderão ser sobrescritos pelas
subclasses. Exemplo:
<?php
class MinhaClasse{
final function Teste( ) {
// …
}
}
?>
Se fosse declarado um método com o nome Teste
em uma subclasse de MinhaClasse, ele não iria
sobrescrever o método declarado como final.
A palavra-chave final
Também é possível declarar uma classe como
final. Exemplo:
<?php
final class MinhaClasse{
//
}
?>
Isso significa que ela não poderá ter subclasses.
Construtores
Um construtor consiste em um método que
será chamado toda vez que for criado um objeto
da classe onde ele for declarado.
Pode ser utilizado para inicializar um objeto
antes dele ser usado.
Ele deve ser criado com o nome _construct( ).
Construtores
<?php
class Classe {
function _construtor ( ) {
print “Esse é o construtor da Classe<br>;
}
}
class SubClasse extends Classe {
function _construct ( ) {
parent::_construct( );
print “Esse é o construtor da SubClasse<br>;
}
$obj = new Classe( );
$obj = new Subclasse( );
?>
Destrutor
O destrutor é nomeado como _destruct( ).
É um método que será chamado após a última
referência feita a um objeto no programa, antes
da liberação da memória.
Pode ser útil para fins de depuração,
fechamento de conexão com banco de dados,
entre outras tarefas.
Destrutor
<?php
class MinhaClasse [
function _construct ( ) {
$this->nome = “MinhaClasse”;
print “Este é o contrutor da classe“ . $this->nome .
“<br>”;
}
function _destruct ( ) {
print “Este é o destrutor da classe” . $this->nome .
“<br>”;
}
}
$obj = new MinhaClasse ( );
?>
Variáveis e métodos estáticos
As variáveis estáticas podem ser inicializadas.
No PHP 5 a palavra static pode ser utilizada
para definir um método como estático. Com isso,
é possível chamá-lo mesmo sem a criação de
um objeto para a classe onde ele foi declarado.
Variáveis e métodos estáticos
<?php
class Classe {
static $variavel_estatica = 10;
}
print Classe::$variavel_estatica;
?>
Variáveis e métodos estáticos
<?php
class Classe {
public static function MetodoEstatico ( ) {
// …
}
}
Classe::MetodoEstatico( );
?>