0 Compartilhamentos 414 Views

PHP Orientado a Objetos para quem está começando

12 de maio de 2009

Introdução

Há algum tempo utilizo PHP para desenvolver aplicações web based, porém nunca utilizando orientação a objeto (OO). Um tanto por não ter muito interesse nisso (pois isso é para mim um hobby), mas muito é porque os artigos sobre o tema são um tanto confusos para mim.

Por isso este ano decidi realmente aprender a orientação a objetos no PHP. Fruto desse aprendizado é este primeiro artigo sobre o tema e que tem por objetivo apenas apresentar de forma sucinta, clara, objetiva e de fácil compreensão pelos iniciantes do que é a orientação a objeto, seus principais conceitos e como fazer isso funcionar na prática.

Quando falamos em orientação a objetos (OO), em PHP, estamos falando basicamente de classes, métodos e propriedades.

Classe, no PHP, é um bloco de código escrito na forma abaixo:

Basicamente é o nome da classe, precedido da palavra reservada class e seguida de um par de colchetes {} o qual delimitará o código da classe.

Cada classe, no PHP, é um objeto, ou seja, uma coleção de métodos e propriedades.

Mas o que são métodos e propriedades?

Se você sabe o que é uma variável no PHP, sabe o que é propriedade, pois propriedades nada mais são do que as variáveis internas de uma classe, ou seja, são variáveis que você coloca dentro dos colchetes {} da classe.

Métodos são as funções internas das classes, ou seja, as funções que você coloca entre os colchetes {} da classe.

Abaixo um exemplo de classe, com métodos e variáveis.

Muito bem, agora que sabemos estes três conceitos, vamos à prática, ou seja, vamos fazer uma classe, com seus métodos e variáveis, e ver como tudo funciona.

Criando uma classe

Agora é o momento de colocarmos em prática os conceitos de classe, métodos e propriedades. Para isso vamos construir uma classe de interação com o MySQL.

Essa classe deverá fazer algumas coisas:

  • Conectar ao servidor MySQL e selecionar o banco de dados desejado;
  • Configurar as variáveis (propriedades) dinamicamente;
  • Executar consultas ao banco de dados, retornando o resultado;
  • Retornar a string SQL usada na consulta.

Abaixo está o código completo da classe (mas não se preocupe, abaixo do código vamos explicá-lo passo a passo):

Inicialmente, indicamos a classe com a palavra-chave class e damos um nome a ela (TutoDB).

Em seguida, definiremos as propriedades da classe, que nada mais são do que variáveis que podem ou não receber valores desde já. No nosso casso, apenas definiremos as variáveis. Caso quiséssemos atribuir-lhes valor, faríamos $host = ‘localhost’; por exemplo.

Aqueles que já trabalham com classes sentirão falta das palavras public, private ou protected. Como disse inicialmente, este é um artigo básico. A questão sobre visibilidade fica para um próximo.

As propriedades que foram definidas servem para armazenar o host MySQL, o usuário, a senha e o banco de dados, além da string de consulta SQL ($host, $user, $pass, $db e $sql, respectivamente).

Depois disso, iniciaremos com os códigos do nossos métodos.

Temos seis métodos na nossa classe:

  • conectar() serve para estabelecer uma conexão ao servidor MySQL (o host);
  • selecionarDB() serve para selecionar o banco de dados desejado;
  • query() executa a consulta ao banco de dados;
  • set() é o método que atribui os valores ás nossas propriedades;
  • getSQL() retorna a String SQL atribuída à propriedade $sql;
  • erro() exibe mensagens de erro;

É importante salientar que não serão explicados o que cada método faz, pois isso fugiria do escopo do artigo. O importante é que se entenda que propriedades são objetos que são armazenados dentro da classe e que são utilizados geralmente pelos métodos e que métodos são partes da classe que fazem alguma coisa, geralmente baseados nas propriedades.

Na próxima parte do artigo veremos como utilizar esta classe e aprenderemos mais sobre a interação entre propriedades e métodos.

Utilizando a classe

Agora que temos a nossa classe pronta, vamos ver o que ela faz e entender um pouco mais sobre métodos e propriedades e a interação entre eles.

Primeiramente devemos instanciar a classe, ou seja, criar um objeto na memória que irá representar a classe TutoDB.

Isso nós conseguimos da seguinte maneira:

Com isso estamos dizendo ao PHP para armazenar na variável $obj uma nova instância da classe TutoDB.

Depois vamos atribuir valores às nossas propriedades da seguinte forma:

Com isso dizemos ao PHP para utilizar o método set() do objeto armazenado em $obj (a classe TutoDB) para atribuir à propriedade passada pelo primeiro argumento o valor do segundo argumento.

Argumentos são os valores passados entre os parênteses das funções ou métodos. No caso da primeira linha, estamos dizendo para que seja colocado o valor information_schema na propriedade $db.

Poderíamos fazer isso de outra forma, sem utilizar um método, mas atribuindo diretamente um valor para a propriedade assim:

Por que então utilizamos um método para fazer isso?

Vamos supor que quiséssemos que a propriedade $user armazene apenas os valores ‘root’ ou ‘admin’. Se deixássemos para atribuir valores em $user da forma $obj->user, qualquer valor poderia ser atribuído, mas se utilizamos um método para isso (no nosso caso, set()), podemos, dentro do método, colocar um código que verifique se o valor passado para ser armazenado na propriedade $user seja apenas root ou admin.

Vamos aproveitar e ver o método set():

Veja que a atribuição de valor à propriedade é feita no seguinte esquema:

Onde:
$this referencia a própria classe.

Precisamos fazer referência à classe pois se colocássemos apenas $prop = $value, estaríamos dizendo ao PHP para atribuir $value a uma variável chamada $prop, que poderia estar até mesmo fora da nossa classe.

Note também que o que o método faz é apenas $this->nomedapropriedade = valor a ser atribuído.

Seguindo…

Vamos conectar com o servidor MySQL com o método conectar() da seguinte forma:

Vejam que o método pega os valores das propriedades $host, $user e $pass para conectar ao servidor MySQL (mysql_connect($this->host,$this->user,$this->pass)), ou se der erro, para o script e chama o método erro() passando-lhe o parâmetro mysql_error() ( or die($this->erro(mysql_error()))).

Depois disso selecionamos o banco de dados desejado (que foi informado na propriedade $db):

Em seguida realizamos a consulta ao banco de dados:

Todos os três métodos seguem um mesmo padrão: usam os valores armazenados nas propriedades para realizar alguma coisa.

Ainda falta pegarmos a string SQL com o seguinte código:

Observe que o método getSQL() apenas retorna o valor armazenado na propriedade $sql. Poderíamos fazer isso também da seguinte forma:

Por fim, vamos escrever algo para mostrar que nossa classe funciona:

Se tudo funcionar, no navegador deve aparecer uma mensagem do tipo:

O número de linhas encontrado para a consulta select * from COLLATIONS é de 127.

Agora temos o código completo para usarmos nossa classe:

Agora que sabemos o básico cobre classes, propriedades e métodos, vamos na conclusão abordar os principais conceitos do artigo.

Resumo final

Para finalizar o artigo, faremos um apanhados dos principais conceitos nele abordados:

Classes são blocos de código, geralmente tratando de operações relacionadas (banco de dados, arquivos etc) e que devem ser instanciadas (colocadas na memória) para serem usadas. Isso se faz da seguinte forma:

Propriedades são variáveis internas da classe que servem para armazenar dados que serão utilizados por métodos.

Para atribuir diretamente dados às propriedades fazemos:

Para “ver” o que está armazenado na propriedade, fazemos o seguinte:

Métodos são funções internas das classes que realizam alguma coisa, geralmente tomando por base os dados armazenados nas propriedades.

Para executar um método, fazemos o seguinte:

Dentro dos métodos, as propriedades e outros métodos internos da classe são referenciados utilizando $this:

Espero que o leitor, principalmente o iniciante, tenha aprendido um pouco mais sobre classes, item básico para a compreensão do que é programação orientada a objetos no PHP.

Você pode se interessar

IBM amplia Call for Code Challenge 2020 para enfrentar o COVID-19
Notícias
5 visualizações
Notícias
5 visualizações

IBM amplia Call for Code Challenge 2020 para enfrentar o COVID-19

Redação - 7 de abril de 2020

A IBM está expandindo o desafio global Call For Code 2020 para abordar a reação do mundo com o COVID–19, além das mudanças climáticas: duas questões urgentes que podem comprometer nossa saúde, nosso planeta e nossa sobrevivência.

Que fim levou o Windows Phone?
Artigos
7 visualizações
Artigos
7 visualizações

Que fim levou o Windows Phone?

Carlos L. A. da Silva - 6 de abril de 2020

A longa história de estratégias equivocadas da Microsoft em dispositivos móveis e o fim de um sonho.

Promoções de Jogos do Final de Semana (03/04)
Notícias
17 visualizações
Notícias
17 visualizações

Promoções de Jogos do Final de Semana (03/04)

Carlos L. A. da Silva - 3 de abril de 2020

Confira as melhores ofertas de jogos de PC para o final de semana.

Deixe um Comentário

Your email address will not be published.

Mais publicações

Como descobrir se tem um “fantasma” no seu teclado
Dicas
19 visualizações
19 visualizações

Como descobrir se tem um “fantasma” no seu teclado

Carlos L. A. da Silva - 2 de abril de 2020
Trabalhando de casa
Artigos
28 visualizações
28 visualizações

Trabalhando de casa

Carlos L. A. da Silva - 30 de março de 2020
Promoções de Jogos do Final de Semana (27/03)
Notícias
27 visualizações
27 visualizações

Promoções de Jogos do Final de Semana (27/03)

Carlos L. A. da Silva - 27 de março de 2020
Aprenda Dart em sete dias sem sair de casa e sem pagar nada
Artigos
29 visualizações
29 visualizações

Aprenda Dart em sete dias sem sair de casa e sem pagar nada

Carlos L. A. da Silva - 23 de março de 2020