Em Busca da “Zend PHP Yellow Pages”
php básico
Operadores – parte VIII – Operadores Lógicos
Aug 5th
Operadores lógicos são usados para ligar valores booleanos em conjunto e obter um terceiro valor booleano em função das duas primeiras. Existem quatro operadores lógicos em PHP das quais três são binárias. O único operador unário é o NÃO Lógico, identificado por uma exclamação antes do operando:
$a = false;
echo !$a; // será impresso 1 (true)
É importante compreender que todos os operadores lógicos trabalham apenas com valores booleanos. por isso, o PHP irá converter primeiro para valor Booleano e, em seguida, executar a operação.
Os três operadores binários são:
| && / AND | Retornará true caso os operandos da direita E esquerta do operador retornem true. |
| || / OR | Retornará true caso um dos operandos o da direita OU o da esquerda retornar true. Podendo ser ambos. |
| XOR | O ou exclusivo retornará true se o um dos operandos o da direita OU o da esquerda retornar true, mais não ambos. |
É importante saber que o PHP tem uma simples estratégia para avaliar os resultados. Por exemplo, se a esquerda do operando && (AND) a operação for avaliada como false. Automaticamente será retornado false, já que qualquer outro resultado não mudará essa condição.
Operadores – parte VII – Operadores de comparação
Jul 31st
São operadores que estabelecem uma relação de equivalência entre dois valores. Eles tanto podem determinar se dois valores são iguais (ou não iguais) entre si, ou se um é maior (ou menor) do que o outro. O resultado de uma operação comparação é sempre um valor Booleano.
Existem quatro operadores de equivalência:
| == | Equivalentes. Verifica se os dois operandos são equivalentes, o que significa que eles podem ser convertidos para o tipo de dados comum que eles têm o mesmo valor, mais não necessariamente do mesmo tipo. |
| === | Identidade. Verifica se os operandos possuem o mesmo Tipo e têm o mesmo valor. |
| != | Não Equivalentes. Verifica se os dois operandos são não equivalentes, sem verificar o seu tipo. |
| !== | Operador não-idênticos. Verifica se os dois operandos não possuem o mesmo tipo de dados ou não têm o mesmo valor. |
É muito fácil confundir o operador de atribuição (=) pelo operador de comparação (==) e este é, na verdade, um dos erros mais comuns na programação. Uma solução parcial para este problema é utilizar um padrão de projetos em que o programador inverte a ordem de seus operandos quando se compara uma variável com valor. Por exemplo, em vez de:
echo $a == 10;
Você poderia escrever:
echo 10 == $a;
Estas duas operações são totalmente idênticas, mas, devido à esquerda operador ser um valor, se tivesse esquecido de um dos sinais iguais, o parser teria jogado um erro, assim, alertando-o para o seu erro.
Outros conjuntos de diferentes operadores estabelecem uma relação de desigualdade entre os dois operandos, ou seja, se um dos dois é maior do que o outro:
| < | Retorna true se o operando da esquerda for menor que o da direita. |
| <= | Retorna true se o operando da esquerda for menos ou igual ao da direita. |
| > | Retorna true se o operando da esquerda for maior que o da direita. |
| >= | Retorna true se o operando da esquerda for maior ou igual ao da direita. |
Embora o processo seja claro para os números, as coisas mudar um pouco para outros tipos de dados, por exemplo, strings são comparadas através da análise do valor binário de cada byte na seqüência até dois valores diferentes são encontrados, o resultado é então determinado pelo valor numérico desses dois bytes. Por exemplo:
$esquerda = “ABC”;
$direita = “ABD”;
echo (int) ($esquerda > $direita);
O código acima imprime 0 (ou seja, falso), porque a letra D é mais elevado na variável da direita, do que na letra C da variável da esquerda. Enquanto você pode poderia pensar que esta comparação ocorre por causa da ordem alfabética. Considere, os seguintes exemplos:
$esquerda = ’maça’;
$direita = ’Maça’;
echo (int) $esquerda > $direita;
Neste exemplo será impresso 1 (verdadeiro), pois o valor ASCII do caractere “a” é 97 que por sua ver é mais elevado que o caractere “A” que é 65.
OBS: A utilização de operadores comparação com arrays também introduz um conjunto de regras diferentes. Veremos mais adiante.
Operadores – Parte VI – Referenciado variáveis
Jul 21st
Por padrão, os operadores trabalham pela atribuição de valor, ou seja, eles copiar o valor de uma expressão para outra. Se do lado direito do operando for uma variável, somente seu valor será copiado, de modo que qualquer alteração subseqüente ao da esquerda do operador não será refletindo no operador da direita. Por exemplo:
$a = 10;
$b = $a;
$b = 20;
echo $a; // será impresso 10
Normalmente, você espera que esse seja o resultado obtido, mais a casos em que você queira uma tarefa que o resultado seja obtido por referência, de modo que a expressão da esquerda do operando torna-se “ligado” com a expressão da direita. Por exemplo:
$a = 10;
$b = &$a; // por referência
$b = 20;
echo $a; // será impresso 20
OBS: O operador trabalha pela atribuição de valor para todos os tipos de dados, exceto objetos, os quais sempre são passados por referência, independentemente do operador “&” ser usado ou não.
A utilização de variáveis por referência usada algumas vezes pode ser até útil, mas sempre será uma técnica PHP bastante arriscada, porque variáveis PHP tendem a permanecer ativas por um longo período de tempo, até mesmo dentro de uma função. Além disso, contrariamente ao que acontece em muitas outras línguas, essa tecnica muitas vezes é mais lenta do que a atribuição de valor, porque o PHP usa uma inteligente “deferred-copy” mecanismo que otimiza a realidade de valor atribuições.
Operadores – Parte V – Operadores de atribuição
Jul 16th
Com os operadores de atribuição é possível atribuir um valor a uma variável. Esse é um dos mais simples operadores e é composto por um sinal de igual (=) . Que nós já vimos em exemplos de posts anteriores.
$variavel = ’valor’;
// $variavel agora contem a string ’valor ’
Além disso, é possível combinar esse operador com todos os operadores aritméticos e de bits. Assim será possível executar uma ação e atribuir o valor a uma variável simultaneamente.
$variavel = 1;
// $variavel agora contem o valor inteiro igual a 1
$variavel += 3;
/*
$variavel agora contem o valor inteiro igual a 4
*/
Neste exemplo, estamos a unindo dois operadores, o operador aritmetico (no sinal de mais) com o operador de atribuição (sinal de igual) para acrescentar ao valor atual da nossa $variavel, o inteiro 3. Tornando assim o valor final igual a 4. Esta técnica pode ser usada com todos os operadores de bit e aritmético.
Operadores – Parte IV – Operadores de Bits
Jul 15th
Operadores de bits são usados para manipular bits de dados. Todos estes operadores são projetados para trabalhar apenas com números inteiros, por isso, o interpretador tentará converter os seus operandos para inteiros antes de executá-los.
O mais simples é operador de bit é o não binário, que negará todos os bits de um número inteiro.
Ex:
$x = 0;
echo ~$x; //irá imprimir -1
Um grupo de operadores binário é usado para executar a manipulação básica de bit, combinando os dois bits de seus operandos, de várias maneiras:
| & | Operador AND (e). O resultado da operação será um valor ativo caso eles estejam setados em ambos os operandos, e desativado caso contrário. |
| | | Operador OR (ou). O resultado da operação será um valor ativo caso eles estejam setados em algum dos operandos, e desativado caso não esteja em nenhum dos operandos. |
| ^ | Operador XOR (ou exclusivo). O resultado da operação será um valor cujo os bits serão ativos em um ou outro operando, e desativados caso contrario. |
Estas operações são todas muito simples, com a possível exceção do XOR (ou exclusivo), que pode parecer estranho à primeira vista. Na realidade, sua funcionalidade é bastante simples: se o bit à esquerda ou direita está configurado, o operando comporta exatamente como o OR (ou). Se ambos os bits estão ativados ou desativados, o resultado é simplesmente invertido.
Um terceiro conjunto de operadores é usado para transferir os bits da esquerda ou direita:
| << | deslocar bits para esquerda – Esta operação desloca à esquerda dos bits do operando por um número de posições igual ao direito do operando, introduzindo bits vazios nas posições de deslocamento. |
| >> | deslocar bits para direita – Esta operação desloca à direita dos bits do operando por um número de posições igual ao direito do operando, introduzindo bits vazios nas posições de deslocamento. |
É interessante notar que estas duas últimas operações proporcionam uma forma fácil (e muito rápida) de multiplicar inteiros com uma potência de dois. Por exemplo:
$x = 1;
echo $x << 1; // será impresso 2
echo $x << 2; // será impresso 4$x = 8;
echo $x >> 1; // será impresso 4
echo $x >> 2; // será impresso 2
Você deve, entretanto, estar ciente do fato que, mesmo que estas operações possam aproximar uma multiplicação ou uma divisão por uma potência de dois, não é exatamente a mesma coisa. Os cenários que podem ser obtidos resultados inesperados. Por exemplo, em uma máquina de 32 bits, vai acontecer o seguinte:
$x = 1;
echo $x << 32;
echo $x * pow (2, 32);
A segunda linha deste exemplo obterá saídas zero, porque todos os bits têm sido deslocado para fora do valor inteiro. Por outro lado, segundo o exemplo (que solicita o Pow () função para elevar o poder de 2 a 32) irá retornar o valor correto 4.294.967.296 que, casualmente, agora será um valor flutuante porque tal número não pode ser representado usando um inteiro de 32 bits.
Operadores – Parte III – Operador de concatenação de String
Jul 11th
Ao contrário de muitas outras linguagens de programação, PHP tem um operador especial para concatenar strings:
$string = “fute” . “bol”;
// $string agora contem o valor ’futebol’$string2 = “desalão”;
// $string2 agora contem o valor ’desalão’$string .= $string2;
// após a concatenação das duas variáveis, nós teremos a variavel $string igual a ’futeboldesalão’echo $string;
// será impresso ’futeboldesalão’
OBS: É importante lembrar que essa não é a melhor forma de se concatenar strings e sim que essa é a única maneira. Usar o operador de adição indicará que as strings serão convertidas primeiramente aos valores numéricos, e adicionadas em seguida (assim originando um valor numérico).
Operadores – Parte II – Operadores Aritméticos
Jul 10th
Operadores aritméticos são os responsáveis pelas operações matemáticas básicas.
| Adição | $a = 1 + 3.5; |
| Subtração | $a = 4 – 2; |
| Multiplicação | $a = 8 * 3; |
| Divisão | $a = 15 / 5; |
| Modulo | $a = 23 % 7; |
OBS: Lembre-se que alguns operadores matemáticos (por exemplo, o operador de adição) assumem um significado diferente quando aplicados a arrays. Falaremos disso mais adiante.
Operadores de incrementação e decrementação formam uma categoria especial de operadores, com eles é possível incrementar e decrementar valores inteiros. Eles são operadores unários, porque eles só aceitam um operando (ou seja, a variável que necessita ser incrementado ou decrementado), e podem mudar de comportamento, dependendo se forem usadas antes ou depois da variável.
A posição do operador determina se o ajuste será realizado antes, ou depois da devolução do valor:
- Se o operador estiver depois do operando, o interpretador irá primeiro retornar o valor atual da variável e depois incrementar ou decrementar o valor.
- Se o operador estiver antes do operando, o interpretador irá primeiro incrementar ou decrementar o valor, e depois retornar o valor.
Veja alguns exemplos:
$a = 1;
// Atribuindo o valor inteiro 1 para a variavel $aecho $a++;
// Imprimindo 1, $a agora é igual a 2echo ++$a;
// Imprimindo 3, $a agora é igual a 3echo –$a;
// Imprimindo 2, $a agora é igual a 2echo $a–;
// Imprimindo 2, $a agora é igual a 1
OBS: uso em excesso desse operador pode tornar seu código de compreensão difícil, até os melhores programadores algumas vezes são surpreendidos pelo uso desse operador. Por isso use-o com cautela.
Vale apena ressaltar também que esse operador deve ser utilizado para valores numéricos. Caso você tente incrementar uma string será retornado 1 como no exemplo abaixo:
$a = “teste”;
echo ++$a;
// será impresso 1 porque primeiro será convertido pra 0 e depois acrescentado 1.
Operadores – Parte I
Jul 9th
Como o próprio nome já diz. operadores são os responsáveis por operações. Existem muitos tipos de operações em PHP. Os mais usados são:
- Operadores de atribuição – Para atribuir dados a variáveis.
- Operadores aritméticos – Para a execução de funções básicas matemáticas.
- Operadores de String – para juntar strings.
- Operadores de Comparações – para comparar dados.
- Operadores Lógicos – Para executar operações lógicas em valores booleanos.
Além desses o PHP também fornece:
- Operadores de Bits – Para manipular Bits usando a matemática booleana.
- Operadores de controle do erro – Para suprimir erros.
- Operadores de execução – Para executar comandos de sistemas.
- Operadores de incremento e decremento – Para incrementar e decrementar valores numéricos.
- Operadores de tipo – Para identificar objetos.
OBS: Na maioria das vezes as operações são binárias o que significa que existem dois operandos. Todas as operações binárias usam a notação em que o operador está entre seus operandos (por exemplo: 2 + 2).
Constantes
Jun 15th
Ao contrário de variáveis, constantes como o próprio nome já diz refere-se a uma definição de valores que não serão mudados. Constantes podem ser acessados de qualquer parte dentro do script PHP, contudo, só podem receber valores escalares. Assim como variáveis, constantes são case-sensitive ( diferencia maiúsculas de minúsculas). É considerada uma boa prática para definir uma constante o uso em caixa alto.
Veja um exemplo de constantes abaixo:
define(’EMAIL’, ’teste@php.net’); // Nome valido
echo EMAIL; // exibe ’teste@php.net’define(’USE_XML’, true);
if (USE_XML) { } // Retorna o valor truedefine(’1CONSTANTE’, ’algum valor’); // nome invalido
Variáveis
May 27th
Variáveis
Variáveis são recipientes de armazenamentos de dados temporários. Em php, uma variável pode conter qualquer tipo de dados, tais como, por exemplo, strings, inteiros, números de ponto flutuante, objetos e arrays. Php não é fortemente tipado, o que significa que ele irá implicitamente alterar o tipo de uma variável conforme necessário, dependendo da operação a ser realizada em seu valor.
Variáveis php são identificadas por um sinal de dólar $, seguido por um identificador. Variáveis devem ter seu identificador usando apenas letras (az, AZ), números ou o caractere sublinhado. Os nomes de variáveis devem iniciar por letras ou sublinhado, esses são apenas alguns dos identificadores case-sensitive (diferencia maiúsculas de minúsculas). Alguns exemplos abaixo:
$nome = ’valido’; // Variável valida
$_nome = ’valido’; // Variável valida
$1nome = ’invalido’; // Variável invalida, iniciada com um número.
Variável de variáveis
Em PHP, também é possível criar as chamadas variável de variáveis. Essa é uma variável cujo nome está contido em outra variável. Por exemplo:
$nome = ’valor1’;
$$nome = ’valor2’;
echo $valor1;
// será exibido na tela ’valor2’
Como você pode ver, neste exemplo, começamos a criar uma variável que contém a string valor1. Em seguida, nós usamos a sintaxe especial $$nome para indicar que queremos que interprete o dado da variável $nome como uma nova variável, assim a nova variável $valor1, será impressa na tela normalmente.
Devido à disponibilidade de variáveis de variáveis, que é efetivamente possível a criação de variáveis cujos nomes não seguem as limitações listadas acima. Também é possível definir o nome entre parênteses:
$nome = ’123’;
/* 123 é o nome da sua variável, números seria normalmente invalidos. */
$$nome = ’456’;
// Agora, você atribui um valor
echo ${’123’};
// Por fim, usando chaves você terá na tela ’456’
OBS: Variável de variáveis é uma ferramenta muito poderosa, e deve ser usada com extremo cuidado, porque o seu código é de difícil compreensão e de documentação, mas também, porque o seu uso inadequado pode levar a algumas importantes questões de segurança.
Uma técnica semelhante a variáveis de Variáveis também podem ser usadas para acessar nomes de funções dentro de uma variável:
function minhaFuncao() {
echo ’ minhaFuncao!’;
}
$f = ’ minhaFuncao’;
$f(); // irá chamar a função minhaFuncao();
Claramente, esta técnica deve ser utilizada com tanto cuidado como variáveis de variáveis, podendo assim ter varias oportunidades de erros e questões de seguranças bastante significativos.
Determinando se uma variável existe
Um dos pontos negativos de como php lida com variáveis é que não há nenhuma maneira de garantir que qualquer uma delas irá existir em qualquer ponto na execução de um script. Isso pode introduzir no seu sistema uma serie de problemas. Para minimizar o problema você pode utilizar o construtor especial isset():
echo isset ($x);
Uma chamada para o isset() irá retornar true se uma variável existe e tiver o valor diferente de NULL.