SlideShare uma empresa Scribd logo
1 de 40
Programação para WEB ,[object Object],[object Object],Programação Orientada a Objetos em PHP
Classes e Objetos <?php class   Pessoa   { private   $nome ; function   __construct( $nome )   { $this ->nome   =   $nome ;   } function   getNome()   { return   $this ->nome;   } function   setNome( $nome )   { $this ->nome   =   $nome ; } } $p   =   new   Pessoa( 'João' ); $q   =   $p ; $p ->setNome( &quot;Maria&quot; ); echo &quot;{$p->getNome()} < br /> &quot;; echo &quot;{$q->getNome()} < br /> &quot;; ?>
Herança <?php require_once ( 'pessoa.php' ); class   PessoaFisica   extends   Pessoa   { private   $cpf ; function   __construct( $nome , $cpf )   { parent ::__construct( $nome ); $this ->cpf   =   $cpf ;   } function   getCpf()   { return   $this ->cpf;   } function   setCpf( $cpf )   { $this ->cpf   =   $cpf ; } } $pf   =   new   PessoaFisica( 'Maria' , '123.456.789-00' ); echo   &quot;Nome:  { $pf ->getNome()} <br/>&quot; ; echo   &quot;CPF:  { $pf ->getCpf()} <br/>&quot; ; ?>
Sobrescrita de Métodos <?php class   MinhaClasse   { protected   function   minhaFuncao()   { echo   &quot;MinhaClasse::minhaFuncao()&quot; ; } } class   OutraClasse   extends   MinhaClasse   { public   function   minhaFuncao()   { parent ::minhaFuncao(); echo   &quot;OutraClasse::minhaFuncao()&quot; ; } } $classe   =   new   OutraClasse(); $classe ->minhaFuncao(); ?>
Sobrecarga de Construtores ,[object Object],[object Object],<?php class   Pessoa   { private   $nome ; function   __construct()   { } function   __construct( $nome )   { $this ->nome   =   $nome ;   } } ?> Fatal error:  Cannot redeclare Pessoa::__construct()
include ou require ,[object Object],[object Object]
include_once ou require_once ,[object Object]
autoload ,[object Object],[object Object],<?php function   __autoload( $class_name )   { require_once   $class_name   .   '.php' ; } $obj   =   new   MyClass1(); $obj2   =   new   MyClass2(); ?>
autoload <?php class   MinhaClasse   { function   helloWorld()   { echo   &quot;Hello, World&quot; ; } } ?> <?php function   __autoload( $class_name )   { require_once ( $_SERVER [ &quot;DOCUMENT_ROOT&quot; ]   .   &quot;/classes/ $class_name .php&quot; ); } ?> <?php require_once   &quot;autoload.php&quot; ; $obj   =   new   MinhaClasse(); $obj ->helloWorld(); ?> index.php autoload.php MinhaClasse.php
Classes e Objetos <?php class   A   { private   $nome ; function   __construct( $nome )   { $this ->nome   =   $nome ; } function   oi()   { if   ( isset ( $this ))   { echo   'Oi, ' . $this ->nome. '. Este objeto é instância da classe ' ; echo   get_class( $this ). '<br/>' ; }   else   { echo   'Oi, não sei o seu nome, pois o método está sendo ' ; echo   'executado estaticamente.<br/>' ; } } } class   B   { function   ola()   { A::oi(); } } $a   =   new   A( &quot;Maria&quot; ); $a ->oi(); A::oi(); $b   =   new   B(); $b ->ola(); B::ola(); ?>
Construtores e Destrutores ,[object Object],[object Object],[object Object],[object Object]
Construtores e Destrutores <?php class   MinhaClasseDestruivel   { function   __construct()   { print   &quot;No construtor<br/>&quot; ; $this ->name   =   &quot;MinhaClasseDestruivel&quot; ; } function   __destruct()   { print   &quot;Destruindo  $this ->name &quot; ; } } $obj   =   new   MinhaClasseDestruivel(); ?>
Visibilidade dos membros <?php class   MinhaClasse   { public   $publica   =   'Public' ; protected   $protegida   =   'Protected' ; private   $privada   =   'Private' ; function   imprimeAlo()   { echo   $this ->publica; echo   $this ->protegida; echo   $this ->privada; } } $obj   =   new   MinhaClasse(); $obj ->imprimeAlo(); echo   $obj ->publica;   // Funciona echo   $obj ->protegida;   // Erro Fatal echo   $obj ->privada;   // Erro Fatal ?>
Visibilidade dos membros <?php class   MinhaClasse   { public   function   __construct()   {   } public   function   meuPublico()   {   } protected   function   meuProtegido()   {   } private   function   meuPrivado()   {   } // Se nada for dito, é public function   foo()   { $this ->meuPublico(); $this ->meuProtegido(); $this ->meuPrivado(); } } $minhaclasse   =   new   MinhaClasse; $minhaclasse ->foo();   $minhaclasse ->meuPublico();   // Funciona $minhaclasse ->meuProtegido();   // Erro Fatal $minhaclasse ->meuPrivado();   // Erro Fatal ?>
:: Operador de Resolução de Escopo ,[object Object],<?php class   MinhaClasse   { const   VALOR_CONST   =   'Um valor constante' ; } $classname   =   'MinhaClasse' ; echo   $classname ::VALOR_CONST; echo   MinhaClasse::VALOR_CONST; ?>
:: Operador de Resolução de Escopo <?php class   OutraClasse   extends   MinhaClasse   { public   static   $meu_estatico   =   'variável estática' ; public   static   function   doisPontosDuplo()   { echo   parent ::VALOR_CONST   .   &quot;&quot; ; echo   self :: $meu_estatico   .   &quot;&quot; ; } } $classname   =   'OutraClasse' ; echo   $classname ::doisPontosDuplo(); OutraClasse::doisPontosDuplo(); ?> ,[object Object]
Inicializações inválidas <?php class   SimpleClass   { // declarações de membro inválidas public   $var1   =   'olá ' . 'mundo' ; public   $var2   =   <<<FIM olá mundo FIM; public   $var3   =   1 + 2 ; public   $var4   =   self ::myStaticMethod(); public   $var5   =   $myVar ; } ?>   ,[object Object]
Inicializações válidas <?php class   SimpleClass   { // declarações de membro válidas public   $var6   =   myConstant; public   $var7   =   self ::classConstant; public   $var8   =   array ( true ,   false ); } ?>
Membros de Classe <?php error_reporting(E_STRICT); class   Foo   { public   static   function   umMetodoEstatico()   { echo   'oi<br/>' ; } public   function   umMetodoNaoEstatico()   { echo   'olá<br/>' ; } } Foo::umMetodoEstatico(); Foo::umMetodoNaoEstatico(); ?> ,[object Object]
Constantes ,[object Object],<?php class   MinhaClasse  { const   constante   =   'valor constante' ; function   mostrarConstante()   { echo   self ::constante   .   &quot;<br/>&quot; ; } } echo   MinhaClasse::constante   .   &quot;<br/>&quot; ; $classe   =   new   MinhaClasse(); $classe ->mostrarConstante(); ?>
Classes Abstratas <?php abstract   class   ClasseAbstrata   { abstract   protected   function   pegarValor(); abstract   protected   function   valorComPrefixo(   $prefixo   ); public   function   imprimir()   { print   $this ->pegarValor()   .   '<br/>' ; } } class   ClasseConcreta1   extends   ClasseAbstrata   { protected   function   pegarValor()   { return   &quot;ClasseConcreta1&quot; ; } public   function   valorComPrefixo(   $prefixo   )   { return   &quot; { $prefixo } ClasseConcreta1&quot; ; } } $classe1   =   new   ClasseConcreta1; $classe1 ->imprimir(); echo   $classe1 ->valorComPrefixo( 'FOO_' )   .   '<br/>' ; ?>
Interfaces <?php interface   Animal   { public   function   emiteSom(); } class   Gato   implements   Animal   { public   function   emiteSom()   { echo   'Miaaauhh' ; } } class   Cachorro   implements   Animal   { public   function   emiteSom()   { echo   'Au, Au' ; } } $a   =   new   Gato(); $b   =   new   Cachorro(); echo   &quot; { $a ->emiteSom()} <br/>&quot; ; echo   &quot; { $b ->emiteSom()} <br/>&quot; ; ?>
final ,[object Object],[object Object],[object Object],<?php class   ClasseBase   { protected   $id   =   0 ; final   function  getId ()   { return   $this ->id++; } } class   ClasseConcreta   extends   ClasseBase   { function  getId ()   { return   $this ->id   +=   2 ; } } ?>
final ,[object Object],<?php final   class   ClasseBase   { // ... } class   ClasseConcreta   extends   ClasseBase   { // ... } ?>
O método __toString() ,[object Object],<?php class   Pessoa   { private   $nome ; function   __construct( $nome )   { $this ->nome   =   $nome ; } function   __toString()   { return   $this ->nome; } } $obj   =   new   Pessoa( &quot;Maria&quot; ); echo   $obj ; ?>
Clonagem de Objetos ,[object Object],[object Object]
Clonagem de Objetos <?php class   Fone   { public   $numero ,   $tipo ; public   function   __construct( $numero , $tipo )   { $this ->numero   =   $numero ; $this ->tipo   =   $tipo ; } } class   Pessoa   { public   $nome ,   $fone ; public   function   __construct( $nome , $num_fone , $tipo_fone )   { $this ->nome   =   $nome ; $this ->fone   =   new   Fone( $num_fone , $tipo_fone ); } public   function   __clone()   { $this ->fone   =   new   Fone( $this ->fone->numero,   $this ->fone->tipo); } } $p1   =   new   Pessoa( 'Maria' , '8633231845' , 'RES' ); $p2   =   clone   $p1 ; echo ( '<p>Objeto Original:</p>' );   print_r( $p1 ); echo ( '<p>Objeto Clonado:</p>' );   print_r( $p2 ); $p2 ->nome   =   'João' ; $p2 ->fone->numero   =   '8699811234' ; $p2 ->fone->tipo   =   'CEL' ; echo ( '<p>Objeto Original:</p>' );   print_r( $p1 ); echo ( '<p>Objeto Clonado:</p>' );   print_r( $p2 ); ?>
Interceptação ,[object Object],[object Object],[object Object],[object Object]
Interceptação <?php class   Pessoa   { private   $atributos ; function   __set( $nome , $valor )   { $this ->atributos[ $nome ]   =   $valor ; } function   __get( $nome )   { return   $this ->atributos[ $nome ]; } function   __call( $nome , $params )   { echo   &quot;Método chamado:  $nome <br/>&quot; ; echo   'Parâmetros: ' ; print_r( $params ); } } $p1   =   new   Pessoa(); $p1 ->nome   =   'Maria' ; $p1 ->fone   =   '8633231234' ; echo   'Nome: '   .   $p1 ->nome   .   '<br/>' ; echo   'Fone: '   .   $p1 ->fone   .   '<br/>' ; print_r( $p1 );   echo   '<br/>' ; $p1 ->meuMetodo( 'PHP' , 123 , 'WEB' ); ?>
Instanciação Dinâmica <?php class   MinhaClasse   { function   exibe( $a , $b )   { echo   &quot;Parâmetros:  $a   $b <br/>&quot; ; } } $classe   =   'MinhaClasse' ; $metodo   =   'exibe' ; $obj   =   new   $classe ; call_user_func( array ( $obj ,   $metodo ), 'PHP' , 'WEB' ); ?>
Tratamento de Erros ,[object Object],[object Object]
Geração e Tratamento de Erros ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Geração e Tratamento de Erros <?php function   trata_erros( $tipo_erro , $msg , $arq , $linha )   { echo   $msg   .   '<br/>' ; if   ( $tipo_erro   ==   E_USER_ERROR)   { die ; } } set_error_handler( 'trata_erros' ); trigger_error( 'Ocorreu um erro!!!' ,E_USER_WARNING); echo   'Código executado ou não' ; ?>
Exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exceções ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exceções <?php function   inverso( $x )   { if   ( $x   ==   0 )   { throw   new   Exception( 'Divisão por zero.' ); } else   return   1 / $x ; } try   { echo   inverso( 5 )   .   '<br/>' ; echo   inverso( 0 )   .   '<br/>' ; }   catch   (Exception   $e )   { echo   $e ->getMessage(),   '<br/>' ; } echo   'Fim.' ; ?>
Tratador de Exceções ,[object Object],[object Object],<?php function  trata_excecoes ( $ex )   { echo   $ex ->getMessage(), '<br/>' ; } set_exception_handler( 'trata_excecoes' ); throw   new   Exception( 'Exceção ocorreu!!!' ); echo   'Código não executado' ; ?>
Comparação de Objetos ,[object Object],[object Object],[object Object],[object Object]
Comparação de Objetos <?php class   Pessoa   { private   $nome ; function   __construct( $nome )   { $this ->nome   =   $nome ; } } $p1   =   new   Pessoa( 'Maria' ); $p2   =   $p1 ; $p3   =   new   Pessoa( 'Maria' ); echo   '$p1 == $p2 - '   .   ( $p1   ==   $p2 )   .   '<br/>' ; echo   '$p1 == $p3 - '   .   ( $p1   ==   $p3 )   .   '<br/>' ; echo   '$p1 === $p2 - '   .   ( $p1   ===   $p2 )   .   '<br/>' ; echo   '$p1 === $p3 - '   .   ( $p1   ===   $p3 )   .   '<br/>' ; ?>
Comparação de Tipo <?php class   Pessoa   {  } class   PessoaFisica   extends   Pessoa   {  } $p1   =   new   PessoaFisica(); var_dump( $p1   instanceof   Pessoa); var_dump( $p1   instanceof   PessoaFisica); var_dump( $p1   instanceof   PessoaJuridica); ?> ,[object Object]

Mais conteúdo relacionado

Mais procurados

Clean Code e Object Calisthenics - Aplicados no PHP
Clean Code e Object Calisthenics - Aplicados no PHPClean Code e Object Calisthenics - Aplicados no PHP
Clean Code e Object Calisthenics - Aplicados no PHPRafael Neris
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesOtávio Calaça Xavier
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPGuilherme Blanco
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend FrameworkJaime Neto
 
Injeção de Dependências com PHP
Injeção de Dependências com PHPInjeção de Dependências com PHP
Injeção de Dependências com PHPDanilo Godoy
 
As novidades do PHP5 (2005)
As novidades do PHP5 (2005)As novidades do PHP5 (2005)
As novidades do PHP5 (2005)Pablo Dall'Oglio
 
Orientação a Objetos em PHP
Orientação a Objetos em PHPOrientação a Objetos em PHP
Orientação a Objetos em PHPzehzinho
 
Hooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPressHooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPressZé Fontainhas
 
PHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPablo Dall'Oglio
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7iMasters
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Ricardo Valeriano
 
DevTalk Zoox 04/2016
DevTalk Zoox 04/2016DevTalk Zoox 04/2016
DevTalk Zoox 04/2016Leandro Silva
 

Mais procurados (20)

Clean Code e Object Calisthenics - Aplicados no PHP
Clean Code e Object Calisthenics - Aplicados no PHPClean Code e Object Calisthenics - Aplicados no PHP
Clean Code e Object Calisthenics - Aplicados no PHP
 
Solid
SolidSolid
Solid
 
Php 05 Mvc
Php 05 MvcPhp 05 Mvc
Php 05 Mvc
 
Slides
SlidesSlides
Slides
 
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simplesObject Calisthenics: relaxe e escreva códigos simples
Object Calisthenics: relaxe e escreva códigos simples
 
Java script aula 08 - formulários
Java script   aula 08 - formuláriosJava script   aula 08 - formulários
Java script aula 08 - formulários
 
Java script aula 05 - funções
Java script   aula 05 - funçõesJava script   aula 05 - funções
Java script aula 05 - funções
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
PHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHPPHPubSP Object Calisthenics aplicado ao PHP
PHPubSP Object Calisthenics aplicado ao PHP
 
PHP robusto com Zend Framework
PHP robusto com Zend FrameworkPHP robusto com Zend Framework
PHP robusto com Zend Framework
 
Java script aula 02 - operadores
Java script   aula 02 - operadoresJava script   aula 02 - operadores
Java script aula 02 - operadores
 
Injeção de Dependências com PHP
Injeção de Dependências com PHPInjeção de Dependências com PHP
Injeção de Dependências com PHP
 
Java script - funções
Java script - funçõesJava script - funções
Java script - funções
 
As novidades do PHP5 (2005)
As novidades do PHP5 (2005)As novidades do PHP5 (2005)
As novidades do PHP5 (2005)
 
Orientação a Objetos em PHP
Orientação a Objetos em PHPOrientação a Objetos em PHP
Orientação a Objetos em PHP
 
Hooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPressHooks, o condimento mágico e escondido do WordPress
Hooks, o condimento mágico e escondido do WordPress
 
PHP: Programando com orientação a Objetos
PHP: Programando com orientação a ObjetosPHP: Programando com orientação a Objetos
PHP: Programando com orientação a Objetos
 
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7PHP Experience 2016 - [Palestra] Keynote: PHP-7
PHP Experience 2016 - [Palestra] Keynote: PHP-7
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
 
DevTalk Zoox 04/2016
DevTalk Zoox 04/2016DevTalk Zoox 04/2016
DevTalk Zoox 04/2016
 

Semelhante a Programação PHP Objetos Classes

Programação web ii aulas 06 e 07
Programação web ii   aulas 06 e 07Programação web ii   aulas 06 e 07
Programação web ii aulas 06 e 07Yuri Bispo
 
Ecommerce, mais simples do que parece
Ecommerce, mais simples do que pareceEcommerce, mais simples do que parece
Ecommerce, mais simples do que pareceImpacta Eventos
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3Jose Berardo
 
Programando Melhor - Flisol
Programando Melhor - FlisolProgramando Melhor - Flisol
Programando Melhor - FlisolLeonn Leite
 
Smarty Template Engine
Smarty Template EngineSmarty Template Engine
Smarty Template EngineDiego Tremper
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicaçãoAntonio Spinelli
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003elliando dias
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Douglas V. Pasqua
 
Validação e Operações CRUD em PHP
Validação e Operações CRUD em PHPValidação e Operações CRUD em PHP
Validação e Operações CRUD em PHPBreno Vitorino
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX Sérgio Souza Costa
 
2009 05 20 Floripa Flex
2009 05 20 Floripa Flex2009 05 20 Floripa Flex
2009 05 20 Floripa FlexEduardo Kraus
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Bruno Borges
 

Semelhante a Programação PHP Objetos Classes (20)

Programação web ii aulas 06 e 07
Programação web ii   aulas 06 e 07Programação web ii   aulas 06 e 07
Programação web ii aulas 06 e 07
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Ecommerce, mais simples do que parece
Ecommerce, mais simples do que pareceEcommerce, mais simples do que parece
Ecommerce, mais simples do que parece
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3
 
PHP FrameWARks - FISL
PHP FrameWARks - FISLPHP FrameWARks - FISL
PHP FrameWARks - FISL
 
Programando Melhor - Flisol
Programando Melhor - FlisolProgramando Melhor - Flisol
Programando Melhor - Flisol
 
Smarty Template Engine
Smarty Template EngineSmarty Template Engine
Smarty Template Engine
 
Curso de Introdução - PHP
Curso de Introdução - PHPCurso de Introdução - PHP
Curso de Introdução - PHP
 
modernizando a arquitertura de sua aplicação
modernizando a arquitertura  de sua aplicaçãomodernizando a arquitertura  de sua aplicação
modernizando a arquitertura de sua aplicação
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
 
Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3Novas Funcionalidade no PHP 5.3
Novas Funcionalidade no PHP 5.3
 
Php 07 Cakephp
Php 07 CakephpPhp 07 Cakephp
Php 07 Cakephp
 
Tutorial Dwr - Configuração e Uso
Tutorial Dwr - Configuração e UsoTutorial Dwr - Configuração e Uso
Tutorial Dwr - Configuração e Uso
 
Validação e Operações CRUD em PHP
Validação e Operações CRUD em PHPValidação e Operações CRUD em PHP
Validação e Operações CRUD em PHP
 
PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX PHP: Linguagem + Mysql + MVC + AJAX
PHP: Linguagem + Mysql + MVC + AJAX
 
2009 05 20 Floripa Flex
2009 05 20 Floripa Flex2009 05 20 Floripa Flex
2009 05 20 Floripa Flex
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
PHP ao Extremo
PHP ao ExtremoPHP ao Extremo
PHP ao Extremo
 
Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6Apps Web em Wicket e Scala no GlassFish Java EE 6
Apps Web em Wicket e Scala no GlassFish Java EE 6
 

Mais de Regis Magalhães

Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducaoRegis Magalhães
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Regis Magalhães
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Regis Magalhães
 

Mais de Regis Magalhães (20)

High Dimensional Data
High Dimensional DataHigh Dimensional Data
High Dimensional Data
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
PHP 10 CodeIgniter
PHP 10 CodeIgniterPHP 10 CodeIgniter
PHP 10 CodeIgniter
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 09-php-crud-mvc
Prog web 09-php-crud-mvcProg web 09-php-crud-mvc
Prog web 09-php-crud-mvc
 
Prog web 08-php-mvc
Prog web 08-php-mvcProg web 08-php-mvc
Prog web 08-php-mvc
 
Prog web 07-pdo
Prog web 07-pdoProg web 07-pdo
Prog web 07-pdo
 
Prog web 05-php-mysql
Prog web 05-php-mysqlProg web 05-php-mysql
Prog web 05-php-mysql
 
Prog web 04-php-gd
Prog web 04-php-gdProg web 04-php-gd
Prog web 04-php-gd
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhosProg web 03-php-sessoes-cookies_cabecalhos
Prog web 03-php-sessoes-cookies_cabecalhos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 
Prog web 01-php-introducao
Prog web 01-php-introducaoProg web 01-php-introducao
Prog web 01-php-introducao
 
Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011Linked Data Tutorial - Conferencia W3C Brasil 2011
Linked Data Tutorial - Conferencia W3C Brasil 2011
 
Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011Linked Data - Minicurso - SBBD 2011
Linked Data - Minicurso - SBBD 2011
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 

Programação PHP Objetos Classes

  • 1.
  • 2. Classes e Objetos <?php class Pessoa { private $nome ; function __construct( $nome ) { $this ->nome = $nome ; } function getNome() { return $this ->nome; } function setNome( $nome ) { $this ->nome = $nome ; } } $p = new Pessoa( 'João' ); $q = $p ; $p ->setNome( &quot;Maria&quot; ); echo &quot;{$p->getNome()} < br /> &quot;; echo &quot;{$q->getNome()} < br /> &quot;; ?>
  • 3. Herança <?php require_once ( 'pessoa.php' ); class PessoaFisica extends Pessoa { private $cpf ; function __construct( $nome , $cpf ) { parent ::__construct( $nome ); $this ->cpf = $cpf ; } function getCpf() { return $this ->cpf; } function setCpf( $cpf ) { $this ->cpf = $cpf ; } } $pf = new PessoaFisica( 'Maria' , '123.456.789-00' ); echo &quot;Nome: { $pf ->getNome()} <br/>&quot; ; echo &quot;CPF: { $pf ->getCpf()} <br/>&quot; ; ?>
  • 4. Sobrescrita de Métodos <?php class MinhaClasse { protected function minhaFuncao() { echo &quot;MinhaClasse::minhaFuncao()&quot; ; } } class OutraClasse extends MinhaClasse { public function minhaFuncao() { parent ::minhaFuncao(); echo &quot;OutraClasse::minhaFuncao()&quot; ; } } $classe = new OutraClasse(); $classe ->minhaFuncao(); ?>
  • 5.
  • 6.
  • 7.
  • 8.
  • 9. autoload <?php class MinhaClasse { function helloWorld() { echo &quot;Hello, World&quot; ; } } ?> <?php function __autoload( $class_name ) { require_once ( $_SERVER [ &quot;DOCUMENT_ROOT&quot; ] . &quot;/classes/ $class_name .php&quot; ); } ?> <?php require_once &quot;autoload.php&quot; ; $obj = new MinhaClasse(); $obj ->helloWorld(); ?> index.php autoload.php MinhaClasse.php
  • 10. Classes e Objetos <?php class A { private $nome ; function __construct( $nome ) { $this ->nome = $nome ; } function oi() { if ( isset ( $this )) { echo 'Oi, ' . $this ->nome. '. Este objeto é instância da classe ' ; echo get_class( $this ). '<br/>' ; } else { echo 'Oi, não sei o seu nome, pois o método está sendo ' ; echo 'executado estaticamente.<br/>' ; } } } class B { function ola() { A::oi(); } } $a = new A( &quot;Maria&quot; ); $a ->oi(); A::oi(); $b = new B(); $b ->ola(); B::ola(); ?>
  • 11.
  • 12. Construtores e Destrutores <?php class MinhaClasseDestruivel { function __construct() { print &quot;No construtor<br/>&quot; ; $this ->name = &quot;MinhaClasseDestruivel&quot; ; } function __destruct() { print &quot;Destruindo $this ->name &quot; ; } } $obj = new MinhaClasseDestruivel(); ?>
  • 13. Visibilidade dos membros <?php class MinhaClasse { public $publica = 'Public' ; protected $protegida = 'Protected' ; private $privada = 'Private' ; function imprimeAlo() { echo $this ->publica; echo $this ->protegida; echo $this ->privada; } } $obj = new MinhaClasse(); $obj ->imprimeAlo(); echo $obj ->publica; // Funciona echo $obj ->protegida; // Erro Fatal echo $obj ->privada; // Erro Fatal ?>
  • 14. Visibilidade dos membros <?php class MinhaClasse { public function __construct() { } public function meuPublico() { } protected function meuProtegido() { } private function meuPrivado() { } // Se nada for dito, é public function foo() { $this ->meuPublico(); $this ->meuProtegido(); $this ->meuPrivado(); } } $minhaclasse = new MinhaClasse; $minhaclasse ->foo(); $minhaclasse ->meuPublico(); // Funciona $minhaclasse ->meuProtegido(); // Erro Fatal $minhaclasse ->meuPrivado(); // Erro Fatal ?>
  • 15.
  • 16.
  • 17.
  • 18. Inicializações válidas <?php class SimpleClass { // declarações de membro válidas public $var6 = myConstant; public $var7 = self ::classConstant; public $var8 = array ( true , false ); } ?>
  • 19.
  • 20.
  • 21. Classes Abstratas <?php abstract class ClasseAbstrata { abstract protected function pegarValor(); abstract protected function valorComPrefixo( $prefixo ); public function imprimir() { print $this ->pegarValor() . '<br/>' ; } } class ClasseConcreta1 extends ClasseAbstrata { protected function pegarValor() { return &quot;ClasseConcreta1&quot; ; } public function valorComPrefixo( $prefixo ) { return &quot; { $prefixo } ClasseConcreta1&quot; ; } } $classe1 = new ClasseConcreta1; $classe1 ->imprimir(); echo $classe1 ->valorComPrefixo( 'FOO_' ) . '<br/>' ; ?>
  • 22. Interfaces <?php interface Animal { public function emiteSom(); } class Gato implements Animal { public function emiteSom() { echo 'Miaaauhh' ; } } class Cachorro implements Animal { public function emiteSom() { echo 'Au, Au' ; } } $a = new Gato(); $b = new Cachorro(); echo &quot; { $a ->emiteSom()} <br/>&quot; ; echo &quot; { $b ->emiteSom()} <br/>&quot; ; ?>
  • 23.
  • 24.
  • 25.
  • 26.
  • 27. Clonagem de Objetos <?php class Fone { public $numero , $tipo ; public function __construct( $numero , $tipo ) { $this ->numero = $numero ; $this ->tipo = $tipo ; } } class Pessoa { public $nome , $fone ; public function __construct( $nome , $num_fone , $tipo_fone ) { $this ->nome = $nome ; $this ->fone = new Fone( $num_fone , $tipo_fone ); } public function __clone() { $this ->fone = new Fone( $this ->fone->numero, $this ->fone->tipo); } } $p1 = new Pessoa( 'Maria' , '8633231845' , 'RES' ); $p2 = clone $p1 ; echo ( '<p>Objeto Original:</p>' ); print_r( $p1 ); echo ( '<p>Objeto Clonado:</p>' ); print_r( $p2 ); $p2 ->nome = 'João' ; $p2 ->fone->numero = '8699811234' ; $p2 ->fone->tipo = 'CEL' ; echo ( '<p>Objeto Original:</p>' ); print_r( $p1 ); echo ( '<p>Objeto Clonado:</p>' ); print_r( $p2 ); ?>
  • 28.
  • 29. Interceptação <?php class Pessoa { private $atributos ; function __set( $nome , $valor ) { $this ->atributos[ $nome ] = $valor ; } function __get( $nome ) { return $this ->atributos[ $nome ]; } function __call( $nome , $params ) { echo &quot;Método chamado: $nome <br/>&quot; ; echo 'Parâmetros: ' ; print_r( $params ); } } $p1 = new Pessoa(); $p1 ->nome = 'Maria' ; $p1 ->fone = '8633231234' ; echo 'Nome: ' . $p1 ->nome . '<br/>' ; echo 'Fone: ' . $p1 ->fone . '<br/>' ; print_r( $p1 ); echo '<br/>' ; $p1 ->meuMetodo( 'PHP' , 123 , 'WEB' ); ?>
  • 30. Instanciação Dinâmica <?php class MinhaClasse { function exibe( $a , $b ) { echo &quot;Parâmetros: $a $b <br/>&quot; ; } } $classe = 'MinhaClasse' ; $metodo = 'exibe' ; $obj = new $classe ; call_user_func( array ( $obj , $metodo ), 'PHP' , 'WEB' ); ?>
  • 31.
  • 32.
  • 33. Geração e Tratamento de Erros <?php function trata_erros( $tipo_erro , $msg , $arq , $linha ) { echo $msg . '<br/>' ; if ( $tipo_erro == E_USER_ERROR) { die ; } } set_error_handler( 'trata_erros' ); trigger_error( 'Ocorreu um erro!!!' ,E_USER_WARNING); echo 'Código executado ou não' ; ?>
  • 34.
  • 35.
  • 36. Exceções <?php function inverso( $x ) { if ( $x == 0 ) { throw new Exception( 'Divisão por zero.' ); } else return 1 / $x ; } try { echo inverso( 5 ) . '<br/>' ; echo inverso( 0 ) . '<br/>' ; } catch (Exception $e ) { echo $e ->getMessage(), '<br/>' ; } echo 'Fim.' ; ?>
  • 37.
  • 38.
  • 39. Comparação de Objetos <?php class Pessoa { private $nome ; function __construct( $nome ) { $this ->nome = $nome ; } } $p1 = new Pessoa( 'Maria' ); $p2 = $p1 ; $p3 = new Pessoa( 'Maria' ); echo '$p1 == $p2 - ' . ( $p1 == $p2 ) . '<br/>' ; echo '$p1 == $p3 - ' . ( $p1 == $p3 ) . '<br/>' ; echo '$p1 === $p2 - ' . ( $p1 === $p2 ) . '<br/>' ; echo '$p1 === $p3 - ' . ( $p1 === $p3 ) . '<br/>' ; ?>
  • 40.