·
Análise de Sistemas ·
Linguagens de Programação
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
2
Aula 9: Cookies e Sessões em PHP
Linguagens de Programação
IFRS
9
Adicionando Listas em Documentos HTML
Linguagens de Programação
IFRS
3
Aula 7 - Formulários em PHP
Linguagens de Programação
IFRS
6
Formulários em HTML: Estrutura e Métodos de Envio
Linguagens de Programação
IFRS
2
Aula 8 - Formulários Parte 2: Envio de E-mail e Upload de Arquivos
Linguagens de Programação
IFRS
6
Orientação a Objetos em PHP - Parte 2
Linguagens de Programação
IFRS
10
Estrutura Mínima de Tabelas em HTML
Linguagens de Programação
IFRS
3
Aula 10: Manipulação de Arquivos em PHP
Linguagens de Programação
IFRS
Texto de pré-visualização
021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 18 Linguagem de Programação IV PHP Aula 14 Orientação a Objetos Índice Classes Objetos Herança Classes Toda definição de classe começa com a palavrachave class seguido por um nome da classe que pode ser qualquer nome que não seja uma palavra reservada no PHP seguido por um par de chaves que contém a definição dos membros e métodos da classe php class SimpleClass declaração de membro public var um valor padrão declaração de método public function displayVar echo thisvar Uma pseudo variável this está disponível quando um método é chamado dentro de um contexto de objeto this é uma referência para o objeto chamador do método Propriedades Variáveis de classes são chamadas de propriedades Elas também podem ser chamadas de atributos ou campos mas aqui manteremos o termo propriedades Elas são definidas usando uma das palavras public protected ou private seguidas por uma declaração normal de variável O valor padrão deve ser uma expressão constante não por exemplo uma variável um membro da classe ou uma chamada de função class SimpleClass declarações de membro inválidas public var1 olá mundo public var2 12 public var3 selfmyStaticMethod public var4 myVar declarações de membro válidas public var5 7 public var6 myConstant public var7 selfclassConstant public var8 arraytrue false Métodos e propriedades de um objeto podem ser acessados usando o operador objetopropriedade Constantes É 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 28 É possível definir valores constantes em cada classe permanecendo a mesma e imutável Constantes diferem de variáveis normais no não uso do símbolo para declarálas ou usálas O valor deve ser uma expressão constante não podendo ser por exemplo uma variável um membro de uma classe o resultado de uma operação matemática ou uma chamada de função class MinhaClasse const constante valor constante function mostrarConstante echo selfconstante echo MinhaClasseconstante classname MinhaClasse echo classnameconstante A partir do PHP 530 classe new MinhaClasse classemostrarConstante echo classeconstante A partir do PHP 530 Autoload Muitos desenvolvedores ao desenvolver aplicações orientadas a objeto criam um arquivo PHP para cada definição de classe Um dos maiores contratempos é ter de escrever uma longa lista de includes no início de cada scriptum include para cada classe necessária Com PHP 5 isso não é mais necessário Você pode definir uma função autoload que é automaticamente chamada no caso de você tentar usar uma classeinterface que ainda não foi definida Ao chamar essa função o scripting engine tem uma última chance para carregar a classe antes que o PHP falhe com erro php function autoloadclassname requireonce classname php obj new MyClass1 obj2 new MyClass2 Construtores e Destrutores PHP 5 permite que os desenvolvedores declarem métodos construtores para as classes Classes que tem um método construtor chamam esse método cada vez que um objeto novo é criado então é apropriado para qualquer inicialização que o objeto possa vir a precisar antes de ser usado php class BaseClass function construct print In BaseClass constructor class SubClass extends BaseClass function construct parentconstruct print In SubClass constructor obj new BaseClass obj new SubClass 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 38 PHP 5 introduz um conceito de destrutor similar ao de outras linguagens orientadas a objeto como o Java O método destrutor será chamado assim que todas as referências a um objeto particular forem removidas ou quando o objeto for explicitamente destruído ou qualquer ordem na sequência de encerramento php class MinhaClasseDestrutivel function construct print No construtor thisname MinhaClasseDestrutivel function destruct print Destruindo thisname obj new MinhaClasseDestrutivel Visibilidade A visibilidade de uma propriedade ou método pode ser definida prefixando a declaração com as palavras chave publicprotected ou private Itens declarados como public podem ser acessados por todo mundo Protected limita o acesso a classes herdadas e para a classe que define o item Private limita a visibilidade para apenas a classe que define o item php Define MinhaClasse class MinhaClasse public publica Public protected protegida Protected private privada Private function imprimeAlo echo thispublica echo thisprotegida echo thisprivada obj new MinhaClasse echo objpublica Funciona echo objprotegida Erro Fatal echo objprivada Erro Fatal objimprimeAlo Mostra Public Protected e Private Define MinhaClasse2 class MinhaClasse2 extends MinhaClasse Nós podemos redeclarar as propriedades públicas e protegidas mas não as privadas protected protegida Protected2 function imprimeAlo echo thispublica echo thisprotegida echo thisprivada 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 48 obj2 new MinhaClasse2 echo obj2publica Funciona echo obj2privada Undefined echo obj2protegida Fatal Error obj2imprimeAlo Mostra Public Protected2 Undefined E com métodos php Define MinhaClasse class MinhaClasse Declara um construtor público public function construct Declara um método public public function MeuPublico Declara um método protected protected function MeuProtegido Declara um método private private function MeuPrivado Esse é public function Foo thisMeuPublico thisMeuProtegido thisMeuPrivado minhaclasse new MinhaClasse minhaclasseMeuPublico Funciona minhaclasseMeuProtegido Erro Fatal minhaclasseMeuPrivado Erro Fatal minhaclasseFoo Public Protected e Private funcionam Define MinhaClasse2 class MinhaClasse2 extends MinhaClasse Esse é public function Foo2 thisMeuPublico thisMeuProtegido thisMeuPrivado Erro Fatal minhaclasse2 new MinhaClasse2 minhaclasse2MeuPublico Funciona minhaclasse2Foo2 Public e Protected funcionam Private não class Bar public function test thistestPrivate thistestPublic public function testPublic 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 58 echo BartestPublic private function testPrivate echo BartestPrivate class Foo extends Bar public function testPublic echo FootestPublic private function testPrivate echo FootestPrivate myFoo new foo myFootest BartestPrivate FootestPublic Static Declarar membros ou métodos de uma classe como estáticos faz deles acessíveis sem precisar instanciar a classe Um membro declarado como estático não pode ser acessado com um objeto instanciado da classe embora métodos estáticos possam Por compatibilidade com o PHP 4 se nenhuma declaração de visibilidade for usada então o membro ou método será tratado como se fosse declarado como public Como métodos estáticos podem ser chamados sem uma instância do objeto ter sido criada a pseudovariável this não é disponível dentro do método declarado como estático Propriedades estáticas não podem ser acessadas pelo objeto usando o operador seta Chamar métodos não estáticos de maneira estática gera um aviso de nível ESTRICT Como qualquer outra variável estática do PHP propriedades estáticas podem somente ser inicializadas usando um valor literal ou constante expressões não são permitidas Então você pode inicializar uma propriedade estática para um inteiro ou array por exemplo você não pode inicializar com outra variável com um retorno de função ou um objeto No PHP 530 é possível referenciar a classe usando uma variável O valor da variável não pode ser uma palavra chave eg self parent e static Propriedades e métodos estáticos são acessados usando o operador duplo dois pontos selfpropriedade Assim como this referencia o própro objeto self referencia a própria classe php class Foo public static meuestatico foo public function valorEstatico return selfmeuestatico class Bar extends Foo public function fooEstatico return parentmeuestatico print Foomeuestatico foo new Foo print foovalorEstatico print foomeuestatico Propriedade Indefinida meuestatico print foomeuestatico 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 68 classname Foo print classnamemeuestatico No PHP 530 print Barmeuestatico bar new Bar print barfooEstatico Métodos estáticos php class Foo public static function umMetodoEstatico FooumMetodoEstatico classname Foo classnameumMetodoEstatico No PHP 530 Objetos Para criar uma instância de uma classe um novo objeto deve ser criado e atribuído a uma variável usando a palavra new Classes devem ser definidas antes de serem instanciadas instance new SimpleClass Herança Uma classe pode herdar métodos e membros de outra classe usando a palavrachave extends na sua declaração Não é possível herdar classes múltiplas uma classe só pode herdar uma classe base Os métodos e membros herdados podem ser sobrescritos a não ser que a classe pai definiu um método como final redeclarando eles com o mesmo nome definido na classe pai É possível acessar os métodos sobrescritos ou membros estáticos referenciadoos com parent class ExtendClass extends SimpleClass Redefine o método pai function displayVar echo Classe Herdeira parentdisplayVar extended new ExtendClass extendeddisplayVar O exemplo acima irá mostrar na tela Classe Herdeira um valor padrão php class foo public function printItemstring echo Foo string PHPEOL public function printPHP echo PHP is great PHPEOL 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 78 class bar extends foo public function printItemstring echo Bar string PHPEOL foo new foo bar new bar fooprintItembaz Output Foo baz fooprintPHP Output PHP is great barprintItembaz Output Bar baz barprintPHP Output PHP is great Classes Abstratas PHP 5 introduz métodos e classes abstratos Não é permitido criar uma instância de uma classe que foi definida como abstrata e qualquer classe que contenha pelo menos um método abstrato deve também ser abstrata Métodos definidos como abstratos simplesmente declaram a assinatura do método eles não podem definir a implementação Quando uma classe herda uma classe abstrata todos os métodos marcados como abstratos na declaração da classe pai devem ser definidos na classe filha além disso esses métodos devem ser definidos com a mesma ou menos restrita visibilidade Por exemplo se um método abstrato é definido como protected a implementação da função deve ser definida ou como protected ou public mas não private Além disso as assinaturas dos métodos devem coincidir ou seja as induções de tipos e o número de argumentos requeridos devem ser os mesmos Isto também se aplica aos construtores a partir do PHP 54 Antes do 54 as assinaturas dos construtores poderiam ser diferentes php abstract class ClasseAbstrata Força a classe que estende ClasseAbstrata a definir esse método abstract protected function pegarValor abstract protected function valorComPrefixo prefixo Método comum public function imprimir print thispegarValor class ClasseConcreta1 extends ClasseAbstrata protected function pegarValor return ClasseConcreta1 public function valorComPrefixo prefixo return prefixoClasseConcreta1 class ClasseConcreta2 extends ClasseAbstrata protected function pegarValor return ClasseConcreta2 public function valorComPrefixo prefixo return prefixoClasseConcreta2 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 88 classe1 new ClasseConcreta1 classe1imprimir echo classe1valorComPrefixoFOO classe2 new ClasseConcreta2 classe2imprimir echo classe2valorComPrefixoFOO Saída ClasseConcreta1 FOOClasseConcreta1 ClasseConcreta2 FOOClasseConcreta2 Exercícios no Moodle
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
2
Aula 9: Cookies e Sessões em PHP
Linguagens de Programação
IFRS
9
Adicionando Listas em Documentos HTML
Linguagens de Programação
IFRS
3
Aula 7 - Formulários em PHP
Linguagens de Programação
IFRS
6
Formulários em HTML: Estrutura e Métodos de Envio
Linguagens de Programação
IFRS
2
Aula 8 - Formulários Parte 2: Envio de E-mail e Upload de Arquivos
Linguagens de Programação
IFRS
6
Orientação a Objetos em PHP - Parte 2
Linguagens de Programação
IFRS
10
Estrutura Mínima de Tabelas em HTML
Linguagens de Programação
IFRS
3
Aula 10: Manipulação de Arquivos em PHP
Linguagens de Programação
IFRS
Texto de pré-visualização
021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 18 Linguagem de Programação IV PHP Aula 14 Orientação a Objetos Índice Classes Objetos Herança Classes Toda definição de classe começa com a palavrachave class seguido por um nome da classe que pode ser qualquer nome que não seja uma palavra reservada no PHP seguido por um par de chaves que contém a definição dos membros e métodos da classe php class SimpleClass declaração de membro public var um valor padrão declaração de método public function displayVar echo thisvar Uma pseudo variável this está disponível quando um método é chamado dentro de um contexto de objeto this é uma referência para o objeto chamador do método Propriedades Variáveis de classes são chamadas de propriedades Elas também podem ser chamadas de atributos ou campos mas aqui manteremos o termo propriedades Elas são definidas usando uma das palavras public protected ou private seguidas por uma declaração normal de variável O valor padrão deve ser uma expressão constante não por exemplo uma variável um membro da classe ou uma chamada de função class SimpleClass declarações de membro inválidas public var1 olá mundo public var2 12 public var3 selfmyStaticMethod public var4 myVar declarações de membro válidas public var5 7 public var6 myConstant public var7 selfclassConstant public var8 arraytrue false Métodos e propriedades de um objeto podem ser acessados usando o operador objetopropriedade Constantes É 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 28 É possível definir valores constantes em cada classe permanecendo a mesma e imutável Constantes diferem de variáveis normais no não uso do símbolo para declarálas ou usálas O valor deve ser uma expressão constante não podendo ser por exemplo uma variável um membro de uma classe o resultado de uma operação matemática ou uma chamada de função class MinhaClasse const constante valor constante function mostrarConstante echo selfconstante echo MinhaClasseconstante classname MinhaClasse echo classnameconstante A partir do PHP 530 classe new MinhaClasse classemostrarConstante echo classeconstante A partir do PHP 530 Autoload Muitos desenvolvedores ao desenvolver aplicações orientadas a objeto criam um arquivo PHP para cada definição de classe Um dos maiores contratempos é ter de escrever uma longa lista de includes no início de cada scriptum include para cada classe necessária Com PHP 5 isso não é mais necessário Você pode definir uma função autoload que é automaticamente chamada no caso de você tentar usar uma classeinterface que ainda não foi definida Ao chamar essa função o scripting engine tem uma última chance para carregar a classe antes que o PHP falhe com erro php function autoloadclassname requireonce classname php obj new MyClass1 obj2 new MyClass2 Construtores e Destrutores PHP 5 permite que os desenvolvedores declarem métodos construtores para as classes Classes que tem um método construtor chamam esse método cada vez que um objeto novo é criado então é apropriado para qualquer inicialização que o objeto possa vir a precisar antes de ser usado php class BaseClass function construct print In BaseClass constructor class SubClass extends BaseClass function construct parentconstruct print In SubClass constructor obj new BaseClass obj new SubClass 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 38 PHP 5 introduz um conceito de destrutor similar ao de outras linguagens orientadas a objeto como o Java O método destrutor será chamado assim que todas as referências a um objeto particular forem removidas ou quando o objeto for explicitamente destruído ou qualquer ordem na sequência de encerramento php class MinhaClasseDestrutivel function construct print No construtor thisname MinhaClasseDestrutivel function destruct print Destruindo thisname obj new MinhaClasseDestrutivel Visibilidade A visibilidade de uma propriedade ou método pode ser definida prefixando a declaração com as palavras chave publicprotected ou private Itens declarados como public podem ser acessados por todo mundo Protected limita o acesso a classes herdadas e para a classe que define o item Private limita a visibilidade para apenas a classe que define o item php Define MinhaClasse class MinhaClasse public publica Public protected protegida Protected private privada Private function imprimeAlo echo thispublica echo thisprotegida echo thisprivada obj new MinhaClasse echo objpublica Funciona echo objprotegida Erro Fatal echo objprivada Erro Fatal objimprimeAlo Mostra Public Protected e Private Define MinhaClasse2 class MinhaClasse2 extends MinhaClasse Nós podemos redeclarar as propriedades públicas e protegidas mas não as privadas protected protegida Protected2 function imprimeAlo echo thispublica echo thisprotegida echo thisprivada 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 48 obj2 new MinhaClasse2 echo obj2publica Funciona echo obj2privada Undefined echo obj2protegida Fatal Error obj2imprimeAlo Mostra Public Protected2 Undefined E com métodos php Define MinhaClasse class MinhaClasse Declara um construtor público public function construct Declara um método public public function MeuPublico Declara um método protected protected function MeuProtegido Declara um método private private function MeuPrivado Esse é public function Foo thisMeuPublico thisMeuProtegido thisMeuPrivado minhaclasse new MinhaClasse minhaclasseMeuPublico Funciona minhaclasseMeuProtegido Erro Fatal minhaclasseMeuPrivado Erro Fatal minhaclasseFoo Public Protected e Private funcionam Define MinhaClasse2 class MinhaClasse2 extends MinhaClasse Esse é public function Foo2 thisMeuPublico thisMeuProtegido thisMeuPrivado Erro Fatal minhaclasse2 new MinhaClasse2 minhaclasse2MeuPublico Funciona minhaclasse2Foo2 Public e Protected funcionam Private não class Bar public function test thistestPrivate thistestPublic public function testPublic 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 58 echo BartestPublic private function testPrivate echo BartestPrivate class Foo extends Bar public function testPublic echo FootestPublic private function testPrivate echo FootestPrivate myFoo new foo myFootest BartestPrivate FootestPublic Static Declarar membros ou métodos de uma classe como estáticos faz deles acessíveis sem precisar instanciar a classe Um membro declarado como estático não pode ser acessado com um objeto instanciado da classe embora métodos estáticos possam Por compatibilidade com o PHP 4 se nenhuma declaração de visibilidade for usada então o membro ou método será tratado como se fosse declarado como public Como métodos estáticos podem ser chamados sem uma instância do objeto ter sido criada a pseudovariável this não é disponível dentro do método declarado como estático Propriedades estáticas não podem ser acessadas pelo objeto usando o operador seta Chamar métodos não estáticos de maneira estática gera um aviso de nível ESTRICT Como qualquer outra variável estática do PHP propriedades estáticas podem somente ser inicializadas usando um valor literal ou constante expressões não são permitidas Então você pode inicializar uma propriedade estática para um inteiro ou array por exemplo você não pode inicializar com outra variável com um retorno de função ou um objeto No PHP 530 é possível referenciar a classe usando uma variável O valor da variável não pode ser uma palavra chave eg self parent e static Propriedades e métodos estáticos são acessados usando o operador duplo dois pontos selfpropriedade Assim como this referencia o própro objeto self referencia a própria classe php class Foo public static meuestatico foo public function valorEstatico return selfmeuestatico class Bar extends Foo public function fooEstatico return parentmeuestatico print Foomeuestatico foo new Foo print foovalorEstatico print foomeuestatico Propriedade Indefinida meuestatico print foomeuestatico 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 68 classname Foo print classnamemeuestatico No PHP 530 print Barmeuestatico bar new Bar print barfooEstatico Métodos estáticos php class Foo public static function umMetodoEstatico FooumMetodoEstatico classname Foo classnameumMetodoEstatico No PHP 530 Objetos Para criar uma instância de uma classe um novo objeto deve ser criado e atribuído a uma variável usando a palavra new Classes devem ser definidas antes de serem instanciadas instance new SimpleClass Herança Uma classe pode herdar métodos e membros de outra classe usando a palavrachave extends na sua declaração Não é possível herdar classes múltiplas uma classe só pode herdar uma classe base Os métodos e membros herdados podem ser sobrescritos a não ser que a classe pai definiu um método como final redeclarando eles com o mesmo nome definido na classe pai É possível acessar os métodos sobrescritos ou membros estáticos referenciadoos com parent class ExtendClass extends SimpleClass Redefine o método pai function displayVar echo Classe Herdeira parentdisplayVar extended new ExtendClass extendeddisplayVar O exemplo acima irá mostrar na tela Classe Herdeira um valor padrão php class foo public function printItemstring echo Foo string PHPEOL public function printPHP echo PHP is great PHPEOL 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 78 class bar extends foo public function printItemstring echo Bar string PHPEOL foo new foo bar new bar fooprintItembaz Output Foo baz fooprintPHP Output PHP is great barprintItembaz Output Bar baz barprintPHP Output PHP is great Classes Abstratas PHP 5 introduz métodos e classes abstratos Não é permitido criar uma instância de uma classe que foi definida como abstrata e qualquer classe que contenha pelo menos um método abstrato deve também ser abstrata Métodos definidos como abstratos simplesmente declaram a assinatura do método eles não podem definir a implementação Quando uma classe herda uma classe abstrata todos os métodos marcados como abstratos na declaração da classe pai devem ser definidos na classe filha além disso esses métodos devem ser definidos com a mesma ou menos restrita visibilidade Por exemplo se um método abstrato é definido como protected a implementação da função deve ser definida ou como protected ou public mas não private Além disso as assinaturas dos métodos devem coincidir ou seja as induções de tipos e o número de argumentos requeridos devem ser os mesmos Isto também se aplica aos construtores a partir do PHP 54 Antes do 54 as assinaturas dos construtores poderiam ser diferentes php abstract class ClasseAbstrata Força a classe que estende ClasseAbstrata a definir esse método abstract protected function pegarValor abstract protected function valorComPrefixo prefixo Método comum public function imprimir print thispegarValor class ClasseConcreta1 extends ClasseAbstrata protected function pegarValor return ClasseConcreta1 public function valorComPrefixo prefixo return prefixoClasseConcreta1 class ClasseConcreta2 extends ClasseAbstrata protected function pegarValor return ClasseConcreta2 public function valorComPrefixo prefixo return prefixoClasseConcreta2 021123 2055 Aula 11 Arquivos httpswebacademicocanoasifrsedubrrcpintoIFRSphpaula14aula14oophp 88 classe1 new ClasseConcreta1 classe1imprimir echo classe1valorComPrefixoFOO classe2 new ClasseConcreta2 classe2imprimir echo classe2valorComPrefixoFOO Saída ClasseConcreta1 FOOClasseConcreta1 ClasseConcreta2 FOOClasseConcreta2 Exercícios no Moodle