Categorias
Introdução à Programação Web para Bioinformática: HTML, CSS, PHP & JavaScript

Fundamentos do PHP

Capítulo 8

Este conteúdo faz parte do livro “Introdução à programação Web para a Bioinformática: HTML, CSS, PHP & JavaScript“. Você pode adquirir a versão impressa desse livro aqui ou a versão para Kindle aqui. Para nos citar, consulte este link.

Neste capítulo, abordaremos de maneira generalizada alguns fundamentos da linguagem PHP. Você perceberá que muitos dos comandos aqui são similares aos encontrados na linguagem Perl. Então se você já tem algum conhecimento nessa linguagem, perceberá que conseguirá se adaptar facilmente ao PHP (se não tem, recomendo que leiam o livro “Introdução à programação para Bioinformática com Perl”).

Comentários

Comentários são trechos de códigos que serão ignorados pelo interpretador na execução. Eles são importantes para organização e documentação do código. Lembre-se: comentários facilitam na legibilidade do código. Bons programadores sempre comentam seus códigos.

PHP importa estilos de comentários de diversas linguagens de programação, como C, C++, Shell e Perl. Observe abaixo:

<?php
// Comentário de linha única: importado do C++
# Comentário de linha única: usado no Shell e no Perl
/* 
Comentário de múltiplas linhas
importado do C 
*/

c8_s1.php | https://goo.gl/haL0dC

Atenção: o estilo de comentários do HTML <– Comentário –> não funciona dentro de códigos PHP. Assim como os estilos de comentários PHP não funcionam em trechos de código HTML.

Variáveis e tipos de dados

Variáveis em PHP

Variáveis são estruturas que permitem o armazenamento de dados na memória. Pense em uma variável como se fosse uma caixa em que se pode guardar uma determinada informação e que poderá ser utilizada a qualquer momento. Por exemplo, no seu primeiro programa você utilizou o comando echo para imprimir a frase “Hello world!”. Entretanto, você foi obrigado a inserir a frase na mesma linha do comando. E se por algum motivo aquela informação fosse inserida antes do comando echo? Vamos editar mais uma vez o nosso programa para que a frase fique armazenada em uma variável chamada “$frase.

<?php
# Criando uma variavel
$frase = "Hello world!";
echo $frase;

c8_s2.php | https://goo.gl/7UC7Pf

Em PHP, toda variável deve ter seu nome iniciado com o caractere cifrão “$”. O nome da variável deve ser escolhido de acordo com o programador, entretanto recomenda-se que o nome tenha alguma relação com o tipo de dados contido nela. Nomes de variáveis também são case sensitive, ou seja, uma variável chamada “$frase” é diferente de uma variável chamada “$Frase” ou “$FRASE”. Além disso, nomes de variáveis não podem conter caracteres especiais, não devem conter espaços (caso necessário utilize underline “_”) e não pode começar com um número.

Assim como em Perl, variáveis em PHP são escaláveis, ou seja, podem conter quaisquer tipos de dados, e podem ser facilmente alteradas sem que isso cause qualquer problema na execução do código.

Variáveis podem ter diversos tipos, dentre os mais comuns destacam-se:

Tipo de variávelCaracterísticaExemplo de declaração
stringRepresentam cadeias de caracteres. Devem ser declarados sempre entre aspas ou apóstrofos.$variavel = “Isto eh uma string”;
intTipo de variável que representa números inteiros.$variavel = 1;
floatVariável que permite números decimais.$variavel = 1.993;
booleanVariável que pode ser verdadeira ou falsa.$variavel = false;

Note que se declararmos uma variável como igual a “1” ($variavel = “1”), essa seria uma variável do tipo string. Enquanto uma variável declarada como: $variavel = 1, seria uma variável do tipo int. E uma variável declarada como: $variavel = 1.00, seria uma variável do tipo float.

Além disso, existem tipos de variáveis que poder armazenar em listas grandes quantidades e diferentes tipos de dados: os arrays. Veremos nos capítulos posteriores como essas estruturas de dados funcionam.

Indentação de código

Blocos são estruturas que delimitam conjuntos de instruções. Recomenda-se que comandos presentes em blocos devam ser indentados, ou seja, organizados por um espaçamento no início da linha, em geral, dado pela tecla tab (ou por uma série de espaços).

Observe abaixo um exemplo de como um código deve ser indentado. Neste exemplo, declaramos uma função que recebe parâmetros e executa comandos. Nos próximos capítulos explicaremos detalhadamente o que são funções e parâmetros. Observe que os parâmetros são declarados na função dentro de parênteses. Em seguida, o bloco é declarado através de chaves. Tudo que estiver entre a abertura ({) e o fechamento das chaves (}) pertencerá ao bloco. Observe o espaçamento inserido antes da declaração dos comandos. Esse espaçamento auxilia na identificação de que os comandos estão vinculados ao bloco.

função (parâmetro){
          Comando1;
          Comando2;
}

Diferente de Python, em PHP a indentação do código não define como ele será executado. Assim, podemos afirmar que PHP não requer obrigatoriamente que o código esteja indentado para ser executado. A indentação é utilizada apenas para organização do código.

Função (parâmetro){ Comando1; Comando2; }

O bloco acima funcionaria da mesma forma que exemplo anterior. Entretanto, escrever um código dessa forma fere as metodologias de boas práticas de programação. Recomendamos que você não faça isso!

Operações matemáticas

Operações em PHP

Operações matemáticas por meio da linguagem PHP podem ser realizadas de maneira simples, utilizando operadores aritméticos, como por exemplo:

  • soma (+);
  • subtração (-);
  • multiplicação (*);
  • divisão (/);
  • módulo (%);
  • potenciação (**);

PHP apresenta quase todos os mesmos operadores aritméticos presentes na linguagem C. No exemplo abaixo, vamos realizar uma operação de soma. Observe o exemplo abaixo:

<?php
$A = 3;
$B = 2;
$SOMA = $A + $B;
echo "A soma de $A + $B é $SOMA";

c8_s3.php | https://goo.gl/sDjYnI

Nesse exemplo, recebemos duas variáveis: uma chamada $A e outra chamada $B. Em seguida, criamos uma terceira variável que recebe a soma de $A e $B. Por fim, exibimos o resultado na tela. Observe que PHP é capaz de identificar variáveis inseridas dentro de aspas no comando echo.

Além desse método é possível inserir os valores numéricos diretamente na variável $SOMA, assim:

<?php $SOMA = 2 + 3;

c8_s4.php | https://goo.gl/vNhIgI

Da mesma forma, é possível efetuar outras operações matemáticas como: subtração, divisão e multiplicação. É possível também intercalar operações matemáticas e isolá-las utilizando parênteses. Veja:

<?php 
# Subtracao: 5 menos 3, igual a 2
$OPERACAO = 5 - 3;
echo "5 – 3 = $OPERACAO";
echo "<br>"; 
# Multiplicacao: 2 vezes 3, igual a 6
$OPERACAO = 2 * 3;
echo "2 x 3 = $OPERACAO";
echo "<br>";
# Divisao: 4 dividido por 2, igual a 2
$OPERACAO = 4 / 2;
echo "4 / 2 = $OPERACAO";
echo "<br>";
# Expressao: 5 menos 3, vezes 2 vezes 3, dividido por 
# 4 dividido por 2, o resultado sera 6
$OPERACAO = (5 - 3) * (2 * 3) / (4 / 2);
echo "(5 - 3) * (2 * 3) / (4 / 2) = $OPERACAO";

c8_s5.php | https://goo.gl/UjuXsr

Observe que no exemplo apresentado, a variável $OPERACAO armazenará diferentes valores. Isso ocorre porque a variável utilizada em todas as operações tem o mesmo nome. Logo, ao final de cada operação matemática, o resultado obtido substitui o resultado anterior armazenado em $OPERACAO.

Veja que após cada impressão, inserimos o comando echo “<br>”;. Lembre-se que os resultados são exibidos em HTML. Para uma melhor visualização é necessário inserir quebras de linhas.

Operadores de reconhecimento

PHP permite ainda que você faça conversões de tipos por meio dos chamados operadores de reconhecimento. São eles:

  • Arrays: (array)
  • Booleanos: (bool) ou (boolean)
  • Números com muitas casas decimais: (double)
  • Números flutuantes: (float)
  • Números inteiros: (int)
  • Números reais: (real)
  • Objetos: (object)
  • Strings: (string)

Para usá-los, adicione o operador antes da variável: (operador) $variavel. Por exemplo, se você tem uma variável do tipo float pode convertê-la para o tipo int assim:

<?php 
$valor_pi = 3.14;
# arredondando pi
$valor_pi_arredondado = (int) $valor_pi;
echo $valor_pi_arredondado; # 3

c8_s6.php | https://goo.gl/JdEc5U

Determinando se um número é par ou ímpar

Pode parecer estranho, mas em programação é extremamente relevante em alguns casos determinar se um número é par ou ímpar. Para isso é possível utilizar o operador módulo (%). O operador módulo determina o resto de uma divisão. Assim, para descobrir se um número é par ou ímpar pode-se aplicar o módulo por dois.

<?php
$num = 10;
$resto = num % 2; 
print $resto; #0

c8_s9.php | https://goo.gl/I1j1IV

O resto da divisão de 10 por 2 é zero, logo a variável $num armazena um número par. Se $num fosse igual a 11, o resto da divisão por 2 seria 1, e assim, seria possível descobrir que o número é impar.

Incremento e decremento

PHP permite o incremento e decremento de variáveis numéricas através dos operadores “++” e “–“.

OperadorAção
++$A $A++ –$A $A–Soma um a $A e depois retorna o valor  Retorna o valor de $A e depois soma um Diminui um de $A e depois retorna valor Retorna o valor de $A e depois diminui um

Operações de incremento permitem que uma dada variável numérica tenha seu valor aumentado em um número, enquanto nas operações de decremento há a subtração de um número.

<?php
$num = 10;
echo ++$num."<br>"; # sera impresso 11
echo --$num."<br>"; # sera impresso 10
echo $num++."<br>"; # sera impresso 10
echo $num--."<br>"; # sera impresso 11

c8_s10.php | https://goo.gl/UIdRAQ

Notou como exibimos as quebras de linhas? No exemplo anterior, quebras de linhas foram inseridas na mesma linha em que exibimos os resultados das operações de incremento e decremento. Nesse exemplo, utilizamos o operador de concatenação de strings: o ponto “.”. Falaremos mais sobre isso no capítulo de strings.

É possível também incrementar ou decrementar uma variável em dois ou mais valores.

<?php
$num = 10;
$num += 2; 
echo $num."<br>"; # sera impresso 12
$num -= 2; 
echo $num."<br>"; # sera impresso 10

c8_s11.php | https://goo.gl/q2k5hw

Operações de incremento e decremento são importantes para gerenciamento de contadores. Aprenderemos mais sobre isso nos próximos capítulos.

Operadores relacionais e lógicos

Até o momento aprendemos sobre operadores matemáticos, entretanto existem diversos outros tipos de operadores, como por exemplo, os operadores relacionais e lógicos.

Operadores relacionais

Operadores relacionais são utilizados para comparações. Em comandos condicionais podem ser utilizados para detectar se uma determinada condição é verdadeira ou não.

Operadores relacionais
OperadorSignificado
==Verifica se uma variável numérica é igual a outra.
===Verifica se uma variável numérica é igual e do mesmo tipo que outra.
Verifica se uma variável numérica é maior que outra.
Verifica se uma variável numérica é menor que outra.
>=Verifica se uma variável numérica é maior ou igual a outra.
<=Verifica se uma variável numérica é menor ou igual a outra.
!=Verifica se uma variável numérica é diferente de outra.
.Operador de concatenação de strings.
=Operador de atribuição.

Observe que o operador “=” não é um operador relacional e sim um operador de atribuição, entretanto foi inserido nessa lista para compará-lo com o operador “==” (igual a).

Operadores lógicos

Operadores lógicos podem ser utilizados para testar duas ou mais condições ao mesmo tempo.

Operadores lógicos
AND&&Conector “e”: valida se duas condições são verdadeiras.
OR||Conector “ou”: valida se pelo menos uma das condições é verdadeira.
!NOTEquivalente a “não”. Válida se é falso.
XOR Verifica se apenas um dos elementos seja verdadeiro.

O operador and executa o bloco condicional se as duas condições são verdadeiras, enquanto o operador or executa o bloco condicional se pelo menos uma das operações for verdadeira. Compreenderemos melhor a importância dos operadores lógicos e relacionais quando falarmos de comandos condicionais.

Estruturas de controle

Estruturas de controle alteram o fluxo de controle de um programa. Eles determinam se um bloco de código deverá ser executado, quando, por quantas vezes e até que condições. Eles podem ser divididos em comandos condicionais e laços de repetição.

Comandos condicionais

Comandos condicionais analisam se uma determinada condição imposta é verdadeira ou falsa, e permitem que decisões diferentes sejam tomadas de acordo com os dados validados.

Comandos condicionais em PHP

Expressões if e else

A expressão if (na tradução literal para o português “se”) realiza testes condicionais, permitindo que o bloco de comando seja executado caso uma condição testada seja comprovada. Uma vez que todos os testes sejam realizados e nenhum for comprovado, o bloco de dados da expressão else, quando declarado, é executado. Observe o exemplo:

<?php 
#determinar se um numero eh par ou impar
$numero = 5;
$resto = $numero % 2;
# Testa se o numero eh par ou impar
if ($resto == 0){
    print "O número $numero é par.";
}
else{
    print "O número $numero é ímpar.";
}

c8_s12.php | https://goo.gl/fGJ3JU

Para comparar o valor presente na variável $resto foi necessário o uso do operador relacional “==”. Nesse exemplo, verificamos se o resto da operação é igual a zero. Caso for, o programa informa que o número digitado é par. Caso não for, o programa informa que o número digitado é ímpar.

Expressão elseif

Em PHP, blocos condicionais encadeados são aninhados através da palavra reservada elseif. A expressão elseif permite que uma nova condição seja testada caso a condição anterior não tenha sido validada positivamente, e assim permite que sejam utilizados quantos testes forem necessários.

<?php 
#determinar se um numero eh positivo ou negativo 
$num = 10;
if ($num == 0){
    print "Número igual a zero.\n";
}
elseif ($num > 0){
    print "Número maior que zero.\n";
}
else{
    print "Número menor que zero.\n";
}

c8_s13.php | https://goo.gl/OxeiHu

O script apresentado anteriormente recebe um número inserido diretamente no código-fonte, e a seguir, faz três comparações: (i) se o número é igual a zero; (ii) se o número é maior que zero; e (iii) se nenhuma das condições anteriores foi atendida, ou seja, o número é menor do que zero.

Expressão switch

A expressão switch permite que um conjunto de condições para uma mesma comparação seja testada. Na prática, switch deve ser usado quando se tem uma série de condicionais if aninhados.

A expressão switch permite o uso de expressões e cláusulas, tais como: (i) case, para separar o bloco; (ii) break, para delimitar até onde as instruções devem ser executadas; e (iii) default, caso nenhuma condição seja atendida. Observe o exemplo a seguir:

<?php
$mes = 4;
switch($mes){
    case 1: echo "Janeiro"; break;
    case 2: echo "Fevereiro"; break;
    case 3: echo "Marco"; break;
    case 4: echo "Abril"; break;
    case 5: echo "Maio"; break;
    case 6: echo "Junho"; break;
    case 7: echo "Julho"; break;
    case 8: echo "Agosto"; break;
    case 9: echo "Setembro"; break;
    case 10: echo "Outubro"; break;
    case 11: echo "Novembro"; break;
    case 12: echo "Dezembro"; break;
    default: echo "Mes invalido"; break;
}

c8_s14.php | https://goo.gl/Lw4sGf

Nesse exemplo, a variável $mes recebe um valor numérico (no exemplo: 4). A partir desse ponto, uma série de comparações são feitas com a variável $mes. Caso a comparação seja positiva, o bloco é executado (no exemplo é impresso o nome do mês: Abril). Caso o valor de $mes não corresponda a nenhum valor indicado (por exemplo, se inseríssemos $mes = 13), a condição default seria executada.

Organização de condições com parênteses

No exemplo a seguir pediremos que o usuário digite sua idade e em seguida tentaremos decidir se o usuário pode votar ou não.

<?php
$idade = 18; 
 
if (($idade > 0) and ($idade < 16)){
    print "Voce nao pode votar!\n";
}
elseif ((($idade >= 16)and($idade < 18))or($idade >= 70)){
    print "Voto opcional!\n";
}
elseif (($idade >= 18) and ($idade < 70)){
    print "Voto obrigatorio!\n";
}
else{
    print "Idade invalida!\n";
}

c8_s15.php | https://goo.gl/c5bU1m

Veja como os parênteses são utilizados para organizar o código: há parênteses delimitando as condições “(idade >= 0)” e “(idade < 16)”, e um par parênteses que delimita a interligação entre as duas condições “((idade >= 0) and (idade < 16))” localizados nas extremidades do comando if.

Observe que na condição a seguir são utilizados três parênteses no início. As condições “((idade >= 16) and (idade < 18))” só serão válidas se o valor presente em idade atender a ambas. O comando condicional ainda seria válido se “(idade >= 70)”, devido ao uso do operador “or”.

Ao final utilizamos o comando else para imprimir uma mensagem caso o usuário digite algum valor que não seja um número inteiro positivo. Um bom código deve prever possíveis erros de execução pelo usuário e imprimir mensagens de aviso.

Laços de repetição

Laços de repetição, também conhecidos como expressões de looping, laços de iteração ou simplesmente loops, são comandos que permitem iteração de código, ou seja, que comandos presentes no bloco sejam repetidos diversas vezes. Através de laços de repetição é possível criar programas que percorram arrays, analisando individualmente cada elemento, e até mesmo criar trechos de código que sejam repetidos até que certa condição pré-estabelecida seja cumprida.

Laços de repetição em PHP

PHP possui basicamente quatro tipos de laço de repetição: while, do… while, for e foreach.

While

O laço while (na tradução literal para a língua portuguesa “enquanto”) determina que enquanto uma determinada condição for válida, o bloco de código será executado. O laço while testa a condição antes de executar o código. Caso a condição seja inválida no primeiro teste o bloco nem é executado.

<?php
$i = 0;
while($i < 10){
    print "$i "; # 0 1 2 3 4 5 6 7 8 9 
    $i++;
}

c8_s16.php | https://goo.gl/pHN7Cm

Aqui inserimos o conceito de contador. Um contador auxilia na determinação de quantas vezes um laço de iteração deve ser executado. Chamamos nosso contador de $i (“i” de iteração). Nesse exemplo, iniciamos nosso contador com valor zero, a seguir o laço while repete todo o bloco de código enquanto $i for menor do que 10. A cada iteração imprimimos o valor de $i e ao final do código incrementamos $i em um elemento. Assim, o código se repete até $i ser igual a 10. Uma vez que isso ocorre, o código é interrompido antes do bloco ser executado. Por isso é impresso de 0 a 9. Se o incremento não for feito o programa ficará executando eternamente. Chamamos isso de loop infinito.

Do… while

O laço do… while (na tradução literal para a língua portuguesa “faça… enquanto”), assim como o laço while, determina que enquanto uma determinada condição for válida o bloco de código será executado. Entretanto, do… while testa a condição após executar o código. Mesmo que a condição seja considerada inválida no primeiro teste, o bloco será executado pelo menos uma vez.

<?php
# Contador $i
$i = 0;
do{
    print "$i "; # 0 1 2 3 4 5 6 7 8 9
    $i++;
}while($i < 10);

c8_s17.php | https://goo.gl/gshfel

For

O comando for (na tradução literal para a língua portuguesa “para”) permite que uma variável contadora seja testada e incrementada a cada iteração, sendo essas informações definidas na chamada do comando. O comando for recebe como entrada uma variável contadora, a condição e o valor de incremento.

<?php
# Iteracao for
for($i = 0; $i < 10; $i++){
    print $i; # 0123456789
}

c8_s18.php | https://goo.gl/aK1v6K

Foreach

O comando foreach (na tradução literal para a língua portuguesa “para cada”) realiza iterações sobre coleções. A cada “volta” do laço, a variável definida na chamada do foreach assume o valor de um dos elementos da coleção. A execução do comando é finalizada quando chega ao fim da coleção ou por meio de um comando de interrupção, como veremos em breve. 

<?php
$aminoacidos = array("Alanina","Cisteina","Aspartato");
foreach($aminoacidos as $a){
    print $a."<br>";
}
# Alanina
# Cisteina
# Aspartato

c8_s19.php | https://goo.gl/Z1fsQ8

O comando foreach recebe um array como parâmetro e aplica, a cada iteração, um elemento a uma variável pré-definida. Nesse exemplo, cada elemento do array $aminoacidos é aplicado a variável $a a cada repetição. O número de repetições depende da quantidade de elementos do array (no caso três). Nos próximos tópicos falaremos mais sobre arrays.

Cláusula continue e break

Caso desejemos alterar o fluxo de execução de um laço de repetição, podemos utilizar a cláusula break, para interromper a execução, ou continue, para prosseguir para a próxima iteração. Veja:

<?php
for($i = 0; $i < 10; $i++){
    if($i > 5){
        break;
    }
    print $i; #012345
}

c8_s20.php | https://goo.gl/Y34hrv

A cláusula continue define que aquela execução do laço é a última. Observe agora o uso da cláusula continue utilizado junto ao laço while.

<?php
$i = 0;
while($i < 10){
    $i++;
    if ($i > 5){ 
        continue;
    }
    print $i; #12345
}

c8_s21.php | https://goo.gl/sTsi9T

A cláusula continue prossegue para próxima execução do laço desprezando todos os comandos do bloco declarados abaixo. Observe que no exemplo acima, o contador é incrementado antes do teste se a variável é maior que 5. Se o contador fosse incrementado após essa linha, quando $i recebesse o valor 6, o programa ignoraria todas as linhas abaixo, e seu programa entraria em loop infinito, resultando em um erro fatal.

No exemplo a seguir usaremos um comando condicional if para verificar se o valor de $i é um numeral ímpar. Se for, o comando continue salta para próxima execução do laço, desprezando o comando print logo abaixo, que imprimirá apenas os valores pares.

<?php
$i = 0;
while($i < 10){
    $i++;
    if ($i % 2 == 1){ 
        continue;
    }
    print $i; # 246810
}

c8_s22.php | https://goo.gl/UOV8w8

Qual o melhor laço de repetição?

Laços de repetição devem ser utilizados de acordo com a ocasião. Recomendamos utilizar o laço while sempre que não soubermos a quantidade de vezes que o bloco se repetirá. O laço do… while pode ser utilizado no mesmo caso, entretanto do… while deve ser utilizado caso queremos que o código seja executado pelo menos uma vez. O laço for deve ser utilizado sempre que soubermos a quantidade exata de iterações que deverão ser feitas. O laço foreach deve ser utilizado para iterar sobre arrays.

Muitas vezes o uso de diferentes laços pode apresentar os mesmos resultados. Logo, o programador tem a liberdade de utilizar aquele que tiver maior confiança e facilidade.

Funções

Funções permitem que trechos de códigos que são chamados repetidamente possam ser declarados em uma única parte do código. Ao executar um script PHP, o interpretador PHP lê linha por linha em sequência. Entretanto, ao encontrar a chamada de uma função, o interpretador salta para outro trecho de código, e somente após a execução desse bloco de código, ele executa as próximas linhas do código. Assim, funções alteram o fluxo de execução de um programa. Pode-se dizer que as funções também são estruturas de controle.

PHP apresenta algumas funções nativas, como por exemplo as funções print e echo. Entretanto, você também pode criar suas próprias funções utilizando a sintaxe descrita abaixo.

function nomeDaFuncao(parametros) {
         # codigo 
}

Para executá-la, utilize o nome da função seguido de argumentos. Lembre-se que a função deve ser declarada anteriormente a linha que executa sua chamada.

nomeDaFuncao(argumentos);

No exemplo a seguir, criaremos uma função para somar dois números.

<?php
function soma($a, $b){
    $soma = $a + $b;
    echo $soma;
}
soma(2,3);
# Sera exibido o valor 5

c8_s23.php | https://goo.gl/WUnkTA

No exemplo acima, o interpretador inicialmente despreza as linhas de código contidas no bloco da função. Ele só as executa quando a função soma é chamada, recebendo como argumentos os valores 2 e 3. A seguir a função atribui os valores 2 e 3 aos parâmetros $a e $b, executa a soma e imprime o resultado na tela. As variáveis criadas dentro de funções só são válidas dentro dos escopos das mesmas. Nesse exemplo não seria possível imprimir a variável $soma fora da função soma.

Retornando valores

Funções podem retornar valores para o código principal usando o comando return. Por exemplo, podemos alterar o código acima para que a função soma retorne o valor da soma de $a e $b para uma variável chamada $soma.

<?php
function soma($a, $b){
    return $a + $b;
}
$soma = soma(2,3);
print "O valor da soma é $soma";
# O valor da soma é 5

c8_s24.php | https://goo.gl/P3UrD3

Nesse exemplo anterior, a variável $soma recebe o retorno da função soma. Funções que não retornam valores são também chamadas de procedimentos.

Chamando funções dentro de outras funções

No exemplo a seguir implementaremos uma sequência de Fibonacci. Na sequência de Fibonacci, um dado número da sequência é igual a soma dos outros dois números anteriores. Para implementação desse exemplo, vamos criar uma função denominada fibonacci, e reaproveitar a função soma.

<?php
function soma($a, $b){
    return $a + $b;
}
function fibonacci(){
    #inicia-se de 1,1
    $i = 1;
    $j = 1;
    while($j < 100){
        print "$i ";
        $aux = soma($i, $j);
        $i = $j;
        $j = $aux;
    }
}
fibonacci();
#1 1 2 3 5 8 13 21 34 55

c8_s25.php | https://goo.gl/Jszi9t

Nesse exemplo, a função fibonacci é responsável por chamar a função soma enviando como argumento as variáveis $i e $j (ambas iguais a 1). Então, o valor da soma é atribuído a uma variável auxiliar chamada $aux. A variável $i recebe o valor de $j, e $j recebe o valor da variável auxiliar. Assim, o programa calcula o próximo número da sequência baseado nos dois anteriores (delimitamos o valor máximo de $j a 100 para que o programa não fique executando eternamente).

Strings

Strings são estruturas utilizadas para representar letras, palavras ou textos em geral, ou seja, cadeias de caracteres. Caracteres são símbolos utilizados para representar linguagens textuais na computação. Na prática cada letra de nosso alfabeto, símbolo de pontuação e acentuação podem ser representados como caracteres.

Uma variável do tipo string somente é definida como string na declaração através de aspas ou apóstrofos. Na prática isso quer dizer que uma variável declarada como $var = “1” ou $var = ‘1’ será considerada do tipo string, enquanto se declarada como $var = 1, será considerada do tipo inteiro.

Strings são muito importantes em programas para Bioinformática, sobretudo para o tratamento de sequências, tanto de nucleotídeos quando de aminoácidos.

Diferença entre aspas e apóstrofos

PHP permite que strings declaradas com aspas sejam pré-processadas, ou seja, é possível interpolar textos com variáveis. PHP interpreta strings declaradas com apóstrofos como texto puro. Observe o exemplo a seguir:

<?php
$animal = "rato";
$personagem = "rei";
$cidade = "Roma";
# Apostrofos
echo 'O $animal roeu a roupa do $personagem de $cidade.<br>';
# Aspas 
echo "O $animal roeu a roupa do $personagem de $cidade.<br>";

c8_s26.php | https://goo.gl/f5sf5e

Veja que o comando echo utilizado com apóstrofos exibe a frase: “O $animal roeu a roupa do $personagem de $cidade.”. Enquanto, com aspas a frase foi exibida corretamente: “O rato roeu a roupa do rei de Roma.”.

Na prática, variáveis declaradas com apóstrofos tendem a ser processadas um pouco mais rápido, entretanto perde-se as vantagens do uso de aspas duplas. Para intercalar texto puro com texto em variáveis será preciso concatená-las às strings.

Concatenação de strings

Concatenação ou junção de strings refere-se ao ato de unir duas ou mais strings em uma única. Para concatenar strings deve-se utilizar o operador ponto “.”.

<?php 
$nucleotideo1 = 'A';
$nucleotideo2 = 'T';
$nucleotideo3 = 'C';
$nucleotideo4 = 'G';
# Concatenando pares
$par1 = $nucleotideo1.$nucleotideo2; #AT
$par2 = $nucleotideo3.$nucleotideo4; #CG
echo 'Pares: '.$par1.' e '.$par2;

c8_s27.php | https://goo.gl/OmxHjZ

Nesse exemplo, as strings presentes nas variáveis $nucleotideo1 e $nucleotideo2 foram concatenadas e armazenadas na variável $par1. Em seguida, $nucleotideo3 e $nucleotideo4 foram também concatenadas e armazenadas em $par2. A seguir foram impressas interpoladas.

Outra forma de concatenar é utilizando o operador “.=”. Nesse caso, uma variável recebe a outra variável.

<?php $par1 .= $par2;
print $par1; #ATCG

c8_s28.php | https://goo.gl/3RZVG1

Convertendo letras maiúsculas e minúsculas

PHP apresenta a função strtolower, que converte os caracteres de uma string para minúsculo. Possui ainda a função strtoupper, que realiza a tarefa oposta, transformando todos os caracteres em maiúsculo. Observe o exemplo a seguir:

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
echo strtolower($string);
# o rato roeu a roupa do rei de roma.
echo "<br>";
echo strtoupper($string);
# O RATO ROEU A ROUPA DO REI DE ROMA.

c8_s29.php | https://goo.gl/EmrQGC

Obtendo o tamanho de um texto

Para se obter o tamanho de uma string, PHP fornece a função strlen. Essa função calcula a quantidade de caracteres presentes na string (contando com espaçamentos).

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
echo strlen($string);
#35

c8_s30.php | https://goo.gl/LVI2p7

Buscando substrings em uma string

Uma substring pode ser compreendida como uma parte de uma string. PHP oferece a função strpos, que recebe duas strings e retorna a posição de aparecimento da segunda na primeira. Por exemplo, na frase “O rato roeu a roupa do rei de Roma.”, em que posição aparece a palavra “Roma”?

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
$substring = "Roma";
echo strpos($string,$substring); #30

c8_s31.php | https://goo.gl/ww8LBn

Utilizando a função strpos podemos descobrir que a palavra “Roma” começa no caractere 30. Podemos ainda utilizar a função strlen para calcular o tamanho da substring e assim calcular com precisão as posições de início e fim da substring, que no caso seria da posição 30 à posição 33 (30: R; 31: o; 32: m; e 33: a).

Dividindo strings com a função substr

PHP permite a divisão de strings através da função substr. Ela recebe como input (entrada) uma string, uma posição de início para corte e o tamanho do corte.

substr (nome da string, posição de início, tamanho do corte);

No exemplo anterior descobrimos que a palavra “Roma” se inicia no caractere 30 da string “O rato roeu a roupa do rei de Roma.”, então vamos utilizar a função substr para extraí-la para uma variável chamada $substring.

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
$substring = substr($string, 30, 4);
echo $substring; # Roma

c8_s32.php | https://goo.gl/cJ2YwU

A função substr inicia sua contagem na posição 0. Com essa informação é possível realizar diversas tarefas na manipulação de strings. Se quiséssemos remover apenas o primeiro caractere bastaria utilizar o código:

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
print substr($string, 1); #  rato roeu a roupa do rei de Roma.

c8_s33.php | https://goo.gl/vmieBK

Quando desprezamos o terceiro parâmetro (tamanho de corte), a função substr presume que o corte deve ser feito da posição indicada no primeiro parâmetro até o final da string.

É possível ainda utilizar valores negativos no terceiro parâmetro. Nesse caso, substr efetua o corte até a quantidade de caracteres indicada antes do fim da string. Por exemplo, se inseríssemos como terceiro parâmetro o valor -5 ao exemplo anterior, além de eliminar o primeiro caractere, ainda eliminaríamos da nossa substring os caracteres “Roma.”.

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
echo substr($string, 1, -5); # rato roeu a roupa do rei de

c8_s34.php | https://goo.gl/eKVax5

Podemos ainda utilizar um valor negativo no segundo parâmetro (posição inicial de corte), que indicará que a posição de início será dada a partir da quantidade de caracteres apresentada antes da posição final. Por exemplo, inserindo o valor -5 como segundo parâmetro e desprezando o terceiro parâmetro, obteríamos a substring que aparece a seis caracteres antes do final da string.

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
echo substr($string, -5); #  Roma.

c8_s35.php | https://goo.gl/uwnwoY

Poderíamos ainda inserir um terceiro parâmetro e extrair apenas quatro caracteres dos seis últimos. Nesse caso, eliminaríamos da substring extraída o ponto final e quebra de linha.

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
echo substr($string, -5, 4); #  Roma

c8_s36.php | https://goo.gl/70sBI0

Resumo da função substr

<?php 
$string = "O rato roeu a roupa do rei de Roma.";
echo substr($string,0,6);            # O rato
echo "<br>";
echo substr($string,23);             # rei de Roma.
echo "<br>";
echo substr($string,-5);             # Roma.
echo "<br>";
echo substr($string,-12,3);          # rei
echo "<br>";
echo substr($string,-8,-6);          # de

Arrays

Arrays (ou arranjos) são estruturas de dados que armazenam coleções de elementos, ou seja, armazenam uma lista de valores. Arrays podem armazenar variáveis de diversos tipos, como strings, números inteiros e flutuantes. A documentação do PHP afirma que, em PHP, arrays são na verdade mapas ordenados: tipos de dados que permitem o relacionamento entre valores a chaves.

Em PHP, arrays são criados através da função que recebe o mesmo nome. Observe o exemplo a seguir:

<?php 
$nucleotideos = array("A", "T", "C", "G");

c8_s37.php | https://goo.gl/tKblif

Se utilizar apenas o comando echo com o nome da variável, será exibido apenas a palavra “Array”.

Para exibir todos os elementos de um array é necessário percorrê-lo usando laços de repetição. No exemplo a seguir, percorreremos cada elemento do array $aminoacidos usando o laço foreach e os exibiremos na tela usando a função echo.

<?php 
$nucleotideos = array("A", "T", "C", "G");
foreach($nucleotideos as $n){
    echo $n;
}

c8_s38.php | https://goo.gl/nzRPXL

Acessando elementos individualmente dentro de um array

É possível acessar cada elemento de um array como se fosse uma variável através dos chamados índices. Para isso o índice deve ser indicado entre colchetes. O índice representa a posição em cada elemento foi declarado. Lembre-se que a contagem sempre começa pelo valor 0, ou seja, para retornar o terceiro elemento de uma lista é necessário chamar a posição [2] do array.

<?php 
$nucleotideos = array("A", "T", "C", "G");
echo $nucleotideos[0]; # A
echo $nucleotideos[1]; # T
echo $nucleotideos[2]; # C
echo $nucleotideos[3]; # G

c8_s39.php | https://goo.gl/SN4ZSb

Um array deve receber um conjunto de valores identificados por chaves. A declaração deve atender a seguinte lógica:

array(chave => valor)

Quando as chaves não são declaradas, PHP aplica chaves numéricas partindo do valor 0. O array apresentado anteriormente corresponde a seguinte declaração:

<?php 
$nucleotideos = array(0 => "A", 1 => "T", 2 => "C", 3 => "G");

c8_s40.php | https://goo.gl/hXHUOp

Além de valores numéricos, strings também podem ser usadas como chaves. No exemplo a seguir vamos usar a primeira letra como chave de nosso array de nucleotídeos.

<?php 
$nucleotideos = array(
    'A' => 'Adenina', 
    'T' => 'Timina', 
    'C' => 'Citosina',
    'G' => 'Guanina'
);
echo $nucleotideos['A']; # Adeina
echo $nucleotideos['T']; # Timina
echo $nucleotideos['C']; # Citosina
echo $nucleotideos['G']; # Guanina

c8_s41.php | https://goo.gl/P1E4FQ

Arrays podem ainda ser iniciados sem qualquer valor e preenchidos durante a execução do script.

<?php 
$array_vazio = array();

c8_s42.php | https://goo.gl/vdItkH

Para preencher um array vazio é necessário o uso da função que permite a inserção elementos em arrays.

Inserindo e removendo elementos em um array

Em PHP, novos elementos utilizando a função array_push, que recebe como entrada o nome de um array seguido pelos elementos adicionados.

<?php 
$aminoacidos = array("Alanina","Cisteina","Aspartato");
# Inserindo um novo elemento
array_push($aminoacidos, "Glutamato");
# Inserindo mais de um elemento por vez
array_push($aminoacidos, "Fenilalanina","Glicina","Histidina");
print_r($aminoacidos);
# Alanina Cisteina Aspartato Glutamato 
# Fenilalanina Glicina Histidina

c8_s43.php | https://goo.gl/9koKNe

Observe que no exemplo anterior usamos a função print_r ao invés de iterar pelo array. A função print_r exibe todo o array sem se importar com a formatação dos dados.

Para remover elementos de um array podemos utilizar a função unset. Podemos ainda usar essa função para apagar todo o array.

<?php 
$aminoacidos = array("Alanina","Cisteina","Aspartato");
# Removendo um unico aminoacido
unset($aminoacidos[2]);
print_r($aminoacidos); # Alanina Cisteina
# Apagando todo o array
unset($aminoacidos);

c8_s44.php | https://goo.gl/vFSsQE

Contando o número de elementos em um array

Podemos contar a quantidade de elementos de um array usando a função count.

<?php 
$aminoacidos = ["Alanina","Cisteina","Aspartato"];
# Retorna o tamanho do array
echo count($aminoacidos); #3

c8_s45.php | https://goo.gl/DnDkOR

Observe que o array $aminoacidos foi criado sem o auxilio da função array. Arrays podem ser criados declarando uma série de itens entre colchetes.

Ordenando arrays

Para ordenar arrays, PHP fornece uma série de funções. Para ordenação baseada nos valores pode-se utilizar a função sort.

<?php 
# Ordenando strings
$aminoacidos = ["Cistenia","Serina","Valina","Alanina","Fenilalanina","Glutamato"];
sort($aminoacidos);
print_r($aminoacidos);
# Alanina Cistenia Fenilalanina Glutamato Serina Valina

c8_s46.php | https://goo.gl/EKIj5A

Podemos ainda fazer uma ordenação baseado no valor da chave usando a função ksort.

<?php 
# Ordenando strings
$aminoacidos = [
    "C"=>"Cistenia",
    "S"=>"Serina",
    "V"=>"Valina",
    "A"=>"Alanina",
    "F"=>"Fenilalanina",
    "E"=>"Glutamato"
];
ksort($aminoacidos);
print_r($aminoacidos);
# Alanina Cistenia Fenilalanina Glutamato Serina Valina

c8_s47.php | https://goo.gl/hsw7Op

Para saber mais sobre funções para ordenação de arrays consulte a documentação: <https://php.net/manual/pt_BR/array.sorting.php>.

Convertendo strings em arrays e vice-versa

PHP apresenta a função explode para converter uma string em um array. A função explode recebe como entrada um delimitador e uma string. Ela quebrará a string em vários valores nas posições especificadas pelo delimitador e os inserirá no array. Por exemplo, o comando explode, usando vírgula como delimitador, pode gerar um array a partir de uma string cujos valores serão os caracteres entre as vírgulas.

<?php 
$nucleotideos = "Adenina,Timina,Citosina,Guanina";
$array_nucleotideos = explode(",",$nucleotideos);
print $nucleotideos; # String
print_r($array_nucleotideos); # Array

c8_s48.php | https://goo.gl/qBFNjJ

PHP ainda fornece a função implode, que realiza a tarefa oposta. A função implode recebe como entrada um array e um caractere que será usado como separador (declare as aspas sem nenhum conteúdo se não desejar separador).

<?php 
$array_nucleotideos = ["Adenina","Timina","Citosina","Guanina"];
$nucleotideos = implode(", ",$array_nucleotideos);
# String
print $nucleotideos;
#Adenina, Timina, Citosina, Guanina

c8_s49.php | https://goo.gl/YPWkM5

Arquivos

Manipulação de arquivos é um requisito importante para bioinformatas, seja para armazenar resultados de um determinado script ou para receber arquivos como entrada para sua aplicação.

Abrindo arquivos

PHP fornece a função fopen para abertura de arquivos. Uma variável “ponteiro” deve receber o conteúdo retornado pela função fopen, que ainda recebe o nome do arquivo e um modo de abertura.

$ponteiro = fopen("nome do arquivo", "modo de abertura");

O modo de abertura refere-se a forma a qual o arquivo será aberto. Resumidamente podemos definir que há três principais modos de abertura: (i) somente leitura; (ii) escrita; e (iii) escrita incremental. E cada um desses modos ainda pode ser auxiliado pelo caractere “+”, que permite ao modo as características de leitura e gravação. A seguir apresentaremos uma tabela que resumo os modos de abertura de arquivos:

ModoDescriçãoCria novo arquivo se não existirDeleta conteúdo se o arquivo já existir
rLeitura  
r+Leitura e escrita                         
wApenas escritaxx
w+Leitura e escritaxx
aApenas escritax 
a+Leitura e escritax 
bAbre o arquivo em modo binário  
tAbre o arquivo em modo texto.  

Ao declarar o nome do arquivo devemos ter em consideração que o arquivo deverá estar no mesmo diretório a qual se encontra o script. Caso não esteja, é recomendado a declaração do endereço completo do arquivo.

<?php $arquivo = fopen("/home/usuario/meuSite/arquivo.txt", "r");

c8_s50.php | https://goo.gl/La3XqP

Fechando arquivos

Após abrir um arquivo, você deve fechá-lo. Se você se esquecer de fechar o arquivo, PHP o fechará ao final do script. Entretanto, fechar o arquivo antes do fim do script é considerada uma boa prática. Para isso, utilize o comando fclose seguido do nome do ponteiro.

<?php fclose ($arquivo);

c8_s51.php | https://goo.gl/Lw1IaI

Lendo o conteúdo de arquivos

Uma vez que um arquivo foi aberto, ele pode ser lido com o auxílio das funções feof e fgets. A função feof detecta o caractere de final de linha, enquanto fgets retorna o conteúdo. Assim, com o auxílio de um laço de repetição é possível ler todo conteúdo de um arquivo. Observe a seguir o uso dessas funções para abrir um arquivo de texto (não se esqueça de criar um arquivo de textos com qualquer conteúdo).

<?php 
$arquivo = fopen("arquivo.txt","r");
while(!feof($arquivo)){
    echo fgets($arquivo);
}
fclose($arquivo);

c8_s52.php | https://goo.gl/VrFzC8

Lendo arquivos como arrays

PHP fornece ainda a função file que permite ler todo conteúdo de um arquivo e armazená-lo em um array. Assim, para ler seu conteúdo pode-se utilizar um laço do tipo foreach.

<?php 
$linhas_arquivo = file("arquivo.txt");
foreach($linhas_arquivo as $linha){
    echo $linha;
}

c8_s53.php | https://goo.gl/ME4BUC

Gravando em arquivos

PHP apresenta a função fwrite que permite a gravação em arquivos. A função fwrite recebe como entrada o nome do ponteiro seguido da mensagem que deseja gravar. No exemplo a seguir, demonstraremos o uso da função fwrite para gravar em um arquivo os elementos de um array.

# Vamos gravar este array em um arquivo
$nucleotideos = ["Adenina","Timina","Citosina","Guanina"];
# Criando arquivo
$arquivo = fopen("arquivo.txt","w");
# Inserimos uma quebra de linha \n
foreach($nucleotideos as $nucleotideo){
    fwrite($arquivo, $nucleotideo."\n");
}
# Fechamos o arquivo
fclose($arquivo);

c8_s54.php | https://goo.gl/2FsfUa

Observe que a função fwrite é chamada para cada elemento do array $nucleotideos. A função fwrite recebe como entrada o ponteiro $arquivo e a variável $nucleotideo que é concatenada com o caractere “\n”. Esse caractere insere uma quebra de linha no arquivo para cada linha inserida. Ao executar essa página no navegador nenhuma mensagem será exibida. Apenas um arquivo chamado “arquivo.txt” será criado no mesmo diretório.

Lembre-se da importância dos modos de leitura e gravação. Toda vez que executar o comando que abre um arquivo em modo gravação, se o arquivo já existir, o conteúdo será apagado. Se deseja que o conteúdo seja mantido, utilize o modo de gravação incremental.

Lendo todos os arquivos de uma pasta

PHP permite que todos os arquivos de um diretório sejam identificados por meio da função scandir. Podemos ainda combinar a função scandir com a função explode e analisar qual a extensão do arquivo. No exemplo a seguir iremos ler todo o conteúdo do diretório atual.

<?php 
# Lendo o diretorio atual
$dir = ".";
$arquivos = scandir($dir);
foreach($arquivos as $arquivo){
    # Colentando a extensao
    $extensao = explode(".",$arquivo);
    $extensao = end($extensao);
    # Organizando por tipos de arquivos
    switch ($extensao) {
        case 'php':
            print "Arquivo PHP: ".$arquivo."<br>";
            break;
        
        case 'txt':
            print "Arquivo de texto: ".$arquivo."<br>";
            break;
    }
}

c8_s55.php | https://goo.gl/hhjWfp

O endereço do diretório é declarado na variável $dir. O caractere “.” indica que os arquivos que desejamos ler estão no mesmo diretório do script executado. Caso tenha interesse em ler arquivos em outro diretório, altere o “.” pelo nome do diretório. Recomendamos o uso do caminho completo do diretório. Em sistemas operacionais Linux ou MacOS deve ser parecido com: “/home/usuario/scripts/arquivos”; ou no sistema operacional Windows com: “C:/users/usuario/scripts/arquivos”. O array $arquivos recebe todos os arquivos do diretório descrito por $dir por meio da função scandir. Então cada nome arquivo é separado pelo caractere “.”. Em geral extensões são descritas nos últimos caracteres do nome de um arquivo. Por exemplo, arquivos de texto tem a extensão “.txt”, enquanto arquivos PHP tem a extensão “.php”.

Apresentamos nesse ponto uma nova função: end. A função end retorna o último elemento de um array. Com essa informação podemos filtrar e determinar qual o tipo do arquivo. Se você usou o mesmo diretório dos exemplos anteriores terá apenas dois arquivos: “index.php” e “arquivo.txt”. Crie mais arquivos e teste essa função.

Função include

A função include permite a chamada de um arquivo dentro de outro. Ela tem grande importância para modularização do código. No exemplo a seguir vamos criar um arquivo chamado “a.php” e um outro arquivo chamado “b.php”. Por fim, criaremos o arquivo “index.php” que incluirá os dois arquivos criados anteriormente. Os arquivos devem estar no mesmo diretório.

Primeiro crie “a.php” com o seguinte conteúdo:

<?php
$a = 5;
print "Valor A: $a <br>";

c8_s56.php | https://goo.gl/niuco3

A seguir crie “b.php” com o seguinte conteúdo:

<?php
$b = 7;
print "Valor B: $b <br>";

c8_s57.php | https://goo.gl/ZfYLcx

Agora crie o arquivo “index.php”:

<?php 
include 'a.php';
include 'b.php';
$soma = $a + $b;
print "A soma de $a + $b = $soma";

c8_s59.php | https://goo.gl/7wnlG0

Ao executar “index.php” todo conteúdo de “a.php” e “b.php” são executados sequencialmente. Nota-se ainda que as variáveis declaradas em arquivos incluídos podem ser utilizadas no arquivo principal.

Função system

A função system permite a execução de programas externos diretamente do código PHP. Apesar de seu uso ser erroneamente relacionada a expressão “gambiarra”, a função system permite a automatização de processos, o que reduz a intervenção humana. Podemos por exemplo, usar a função system para executar um script Python diretamente do código em PHP.

No exemplo a seguir, vamos usar a função system dentro do PHP para executar um programa em Python, que gravará uma mensagem em arquivo. A seguir vamos usar o PHP para ler a mensagem.

Primeiro crie um script em Python chamado “mensagem.py”:

# Script em Python
# Cria o arquivo de output
w = open("mensagem.txt","w")
# Grava mensagem
w.write("Eu amo Bioinformatica.\nMensagem criada com Python.")
# Fecha arquivo
w.close()

c8_s60.py | https://goo.gl/FbjvfT

Não vamos dar detalhes de como esse script funciona. Para saber mais sobre Python adquira “Introdução à programação para Bioinformática com Biopython”.

Agora na página “index.php” adicione as seguintes linhas:

<?php 
# Excutando scripts externos
system("python mensagem.py");
# Lendo mensagem.txt
$mensagem = file("mensagem.txt");
foreach($mensagem as $linha){
    print $linha."<br>";
}

c8_s61.php | https://goo.gl/CAUGwk

No exemplo acima, executamos o script Python usando o comando system. O script “mensagem.py” cria um arquivo “mensagem.txt” que a seguir é lido pela nossa página PHP. Observe que para criar esse script foi necessário saber o nome do arquivo que seria criado pelo script em Python. Você não precisou conhecer profundamente como o script Python funcionava, mas conhecer as entradas e saídas do programa é essencial para que sua página funcione corretamente.

Princípios da orientação a objetos

Apesar de orientação a objetos não ser uma característica nativa das primeiras versões do PHP, as novas versões adotaram com grande qualidade esses princípios. De fato, programação orientada a objetos é essencial para desenvolvimento com PHP nos principais frameworks MVC, como Laravel, Zend e Codeigniter. Entretanto, por se tratar de um livro introdutório não nos aprofundaremos nesses conceitos. De fato, citaremos aqui apenas alguns exemplos para que você leitor tenha algum conhecimento prévio do assunto caso venha a se deparar com algum código similar.

A programação orientada a objetos (POO) é um paradigma de desenvolvimento em que sistemas são organizados em classes e objetos. Classes representam um conjunto de características de um determinado tipo. Por exemplo, a classe aminoácidos poderia ter as seguintes características: cadeia lateral, tipo, quantidade de átomos, volume, dentre outras informações. Objetos são instâncias de classes. Por exemplo, alanina poderia ser um objeto da classe aminoácidos. Métodos são habilidades que os objetos possuem. Por exemplo, alguns aminoácidos podem realizar ligações de hidrogênio.

No exemplo a seguir implementaremos alguns conceitos de orientação a objetos. Primeiro crie um arquivo chamado “Aminoacidos.php”.

<?php 
class Aminoacidos{
    public $nome;
    public $abreviacao;
    public $tipo;
    # metodo construtor da classe
    function Aminoacidos(){
        $this->criaAminoacido();
    }
    function criaAminoacido(){
        $this->nome = "Glutamato";
        $this->abreviacao = "E";
        $this->tipo = "Polar negativo";
    }
}

c8_s62.php | https://goo.gl/TLAfwM

Nesse arquivo declaramos inicialmente a classe “Aminoacidos”. Observe que é considerada uma boa prática iniciar o nome da classe com letra maiúscula. A seguir variáveis públicas são criadas. Nessas variáveis estarão as características que a classe poderá adotar (nome, abreviação e tipo). O método construtor é declarado a seguir. Esse método, que deve ter o mesmo nome da classe, é uma função executada toda vez que a classe for instanciada. No nosso exemplo, o método construtor chama a função criaAminoacido. Essa função aplica valores as variáveis declaradas anteriormente. Observe a presença da variável $this e da forma como ela é declarada.

A seguir crie o arquivo “index.php”:

<?php 
require 'aminoacidos.php';
$aminoacido = new Aminoacidos();
echo "<b>Nome: </b>".$aminoacido->nome;
echo "<br>";
echo "<b>Sigla: </b>".$aminoacido->abreviacao;
echo "<br>";
echo "<b>Tipo: </b>".$aminoacido->tipo;

c8_s63.php | https://goo.gl/lSCvcJ

Nesse arquivo apresentamos uma nova função: require. Essa função tem um modo de funcionamento parecido com a função include, entretanto enquanto em include caso a inclusão falhe nenhum problema ocorrerá na página, em require a existência do arquivo é necessária para o correto funcionamento da página.

A função new permite a instanciação de um novo objeto. Assim a variável $aminoacido passa a ser uma variável que armazena um objeto. Para exibir seu conteúdo é necessário utilizar seu nome, seguido dos caracteres -> e do nome da variável pública presente na classe, por exemplo, ao imprimir $aminoacido->nome irá exibir “Glutamato”.

Envio de arquivos com PHP

Quer aprender mais? Conheça nossos cursos profissionalizantes à partir de R$19,99:

Livro Introdução à Programação para Web para Bioinformática: HTML, CSS, PHP & JavaScript

Capítulo 1
Introdução ao HTML

Capítulo 2
Fundamentos do HTML

Capítulo 3
Estrutura de páginas

Capítulo 4
Folhas de Estilo em Cascata (CSS)

Capítulo 5
Bootstrap

Capítulo 6
Iniciando a construção de um Website

Capítulo 7
Introdução ao PHP

Capítulo 8
Fundamentos do PHP

Capítulo 9
Transformando um Website em dinâmico

Capítulo 10
Introdução ao JavaScript

Capítulo 11
Fundamentos do JavaScript

Capítulo 12
jQuery

Capítulo 13
Bootstrap JavaScript

Capítulo 14
D3.js

Capítulo 15
3Dmol

Capítulo 16
Projeto Final

Epílogo
Referências Bibliográficas

Cite:

MARIANO, DIEGO; de MELO-MINARDI, R. C. . Introdução à Programação Web para Bioinformática: HTML, CSS, PHP & JavaScript. 1. ed. North Charleston, SC (EUA): CreateSpace Independent Publishing Platform, 2017. v. 3. ISBN: 978-1520895154; 403p .

Por Diego Mariano

Doutor em Bioinformática pela Universidade Federal de Minas Gerais com atuação na área de ciência de dados e aprendizado de máquina aplicados ao aperfeiçoamento de enzimas usadas na produção de biocombustíveis. Mestre em Bioinformática, também pela UFMG, atuando na área de desenvolvimento de sistemas Web para montagem de genomas. Atualmente realiza estágio pós-doutoral no Departamento de Ciência da Computação da UFMG com foco em desenvolvimento de sistemas Web para Bioinformática, análise exploratória e visualização de dados. Tem conhecimentos nas linguagens: PHP, JavaScript, Python, R, Perl, HTML, CSS e SQL.