PHP para Iniciantes: Operadores - Introdução

Apesar de não ter uma boa introdução na documentação, achei que faria sentido dar um resumo sobre o que vamos falar nesse novo conjunto de tópicos. O fato é que, na documentação oficial do PHP, nós já começamos visualizando o tópico Precedência de Operadores, mas, na minha concepção, antes de falar sobre isso nós precisamos discutir uma coisa muito importante...

O que são operadores?

Descrevendo com minhas próprias palavras, operadores são símbolos que acionam uma ação sobre um ou mais elementos, que podem ser expressões. Essa ação é chamada de operação. Por exemplo, se você quer fazer uma soma, isso seria:

  • operação: somar;
  • quantidade de elementos para realizar: dois.

Nesse caso, a gente consegue enxergar essa operação como uma função:

<?php

function somar(int|float|string $a, int|float|string $b): int|float
{
    // retorna a soma, que não adianta escrever $a + $b se não a explicação vai pro saco :hehe:
}

Porém, seria muito chato ficar fazendo somar(1, 2) toda hora que quisesse fazer uma soma, certo? Bem, é pra isso que serve os operadores. Você realiza essas operações com símbolos mais simples, sendo que grande parte vai tentar imitar a matemática.

Por que a matemática, Kiko?

Ah, cara, isso é algo que a humanidade estuda há mais de 2 mil anos, sendo uma linguagem universal. Por que não usar algo que todo mundo ao redor do globo pode estudar? Então é óbvio que iríamos adotar os símbolos do dicionário matemático - pelo menos os que existem na tabela ASCII.

Dito isso, símbolos como +, -, *, /, %, ^, &, |, ! acabam todos por acionar alguma operação na linguagem. Não é exclusivo do PHP, mas alguns símbolos são diferentes em outras linguagens (para fazer a mesma coisa).

Você já deve imaginar qual operação realiza alguns dos que mencionei anteriormente, mas você já conhecia os operadores bit a bit, mais conhecidos como bitwise operators? Eu citei ^, & e |. São bem interessantes! Também falaremos dele.

A lista é enorme, por isso irei seguir a divisão prescrita na documentação oficial do PHP nos próximos artigos:

  • Precedência de operadores: um assunto para explicar qual operador é executado primeiro numa sequência de operações. Lembra que no artigo anterior eu coloquei uma conta 100 + 100 * 100 % 40? E no final das contas, a ordem de execução ficou 100 * 100, depois 10000 % 40, e aí 100 + 0. Essa ordem é definida como precedência, um assunto bem legal que aborda um pouco sobre Interpretadores, matéria de faculdade;
  • Operadores aritméticos: são os que fazem cálculos. Você já viu alguns, mas tenho quase certeza que deve ter algum que nunca mencionei até aqui. Vamos aguardar até lá?
  • Operadores de atribuição: basicamente, são os operadores cuja última ação é atribuir o valor a alguma coisa. Variável? Constante? Sei lá, o que está recebendo a atribuição não é o importante aqui, apenas o operador;
  • Operadores bit a bit: lembra aquela "aula" que eu dei no artigo sobre números inteiros, quando falei sobre base numérica? Então, bitwise operators são operadores que realizam operações binárias. Um exemplo só pra deixar o gostinho:

    <?php
    $a = 1;
    $b = 3;
    
    var_dump($a & $b); // = 1
    

    Ué, por que dá 1, Kiko?

    & é um operador bitwise AND, que pega somente os bits que são "true". No caso, 3 em binário se escreve como 11, dois bits 1. Se formos colocar o binário de 1 em dois bits, teríamos 01. O primeiro bit 0 com 1, dá 0. O segundo, como ambos são 1, resulta em 1... Por isso que 1 & 31. Entendeu? Bem, não tenha pressa, eu com certeza trarei exemplos melhores e contextos mais próximos da realidade pra te mostrar o gigantesco universo escondido por trás dos operadores bit a bit!

  • Operadores de comparação: dei muitos spoilers no artigo anterior, então não espere muita coisa nova sobre isso, rs;
  • Operadores de controle de erros: esse aqui vai ser o artigo que vou escrever com grande desgosto, porque tudo aqui dentro não é recomendado como boas práticas. Ainda assim, preciso falar. Você pode encontrar códigos antigos com isso e sabendo o que cada operador faz, vai entender o que está acontecendo: CAOSSSS;
  • Operador de execução: é apenas um, então acho que não tenho o direito de te dar spoilers dessa vez. Mas é interessante conhecê-lo, então aguarde ansiosamente!
  • Operadores de incremento/decremento:

    Ah, Kiko, você já não falou tudo sobre esse?

    De forma aritmética? Sim! Mas sabia que dá para usar incremento/decremento para avançar letras do alfabeto? Hehehehehehe, então pode esperar que tem mais!

  • Operadores lógicos: conhece a famosa "tabela da verdade"? Bom, irei usá-la para explicar algumas coisas de lógica de programação nesse artigo, depois irei te introduzir aos operadores and, or, xor e not, onde podem ser representados por símbolos (exceto o xor). Acho que vai ser interessante, mas pra quem nunca estudou lógica, tentarei sugerir algumas leituras pois vai ser meio difícil de compreender;
  • Operador de texto: que só tem um, o operador de concatenação. Eu já mostrei em exemplos e já falei muitos detalhes sobre o tipo de dados string. Vamos dizer que esse artigo vai ser uma mera revisão, beleza?
  • Operadores de array: uma super caixinha de surpresas. Nesse caso, teremos alguns símbolos que vão ser simples de entender, pois fazem sentido. Mas tem outros que não é tão trivial pra quem nunca viu em outras linguagens. Spread operator mesmo, é uma parada super legal e que tive uma certa dificuldade de explicar pra minha cunhada o motivo da escrita ser daquele jeito. Ainda assim, faz um certo sentido depois de entender. Desafiador? Sim, mas vamos conseguir. Obs.: spread operator não está na documentação oficial do PHP, mas deveria estar (hmmmmmm). Eu irei mencionar porque sim :hehe:;
  • Operador de tipagem: que também é só um, então sem spoilers.

Alguns artigos vão ser bem emocionantes de escrever e vai me tomar um certo tempo pra escrever bem, então não estranhem se meu ritmo de artigos cair de repente. Eu escrevo todos os dias e tento lançar um artigo por dia útil, mas a vida de pai de gêmeas é punk e isso nem sempre é possível. Imagine escrever quase um paper, rs.

E por hoje é só! Nesses últimos dias recebi alguns elogios inesperados lá no trabalho e pelo LinkedIn, eu acho muito massa quando isso acontece e fico super empolgado para dar o meu melhor nos próximos artigos. O que me anima são duas coisas:

  • primeiramente, meu ego, não vou mentir, é muito foda hhauhauahua;
  • e segundo, ver que tem gente descobrindo coisas de PHP que desconheciam, até mesmo a galera que já trabalha há algum tempo e não fazia ideia.

Eu quero ver vocês propagarem esse mesmo conhecimento quando forem crescendo nas senioridades. Ajudem um dev jr. a crescer! Não somos inimigos de cargo, sério. Somos uma comunidade, iremos crescer juntos e conhecer muita gente foda ao longo da carreira. Se você trabalha num ambiente tóxico que faz com que você e outros desenvolvedores se odeiem, vocês estão no lugar errado. Infelizmente nem todos tem as oportunidades para se livrar dessas coisas, então só peço: não desistam!

Continue estudando. Se eu estiver te ensinando alguma coisa, exponha esse fato e eu vou tentar te ensinar ainda mais, beleza?! E não sou só eu: a comunidade inteira está aqui pra te puxar pra esse universo. Lá na Picpay mesmo, tem uma super comunidade de desenvolvedores PHP que é mais unida do que pão com geléia. Sempre reforçamos coisas positivas e guiamos todo mundo para uma carreira saudável.

Desculpa aí pelo momento coach, mas senti que deveria falar isso pra quem quer que esteja lendo, rs. Enfim, voltando ao script...

Curtiu?! Comenta e compartilha! Caso esteja ansioso(a) pra ver alguns dos assuntos que mencionei, você pode encontrar bons posts na documentação oficial do PHP. Lá vai ter explicando os operadores com alguns exemplos genéricos, pode dar uma boa espiada que eles explicam alguma coisa, mas vou tentar sempre ir além do que está escrito por lá, fechado?! Então nos vemos em breve!

Inté!