2.3. PHP – Tipos de dados e operadores

Propaganda
Programação para Internet II
2.3. PHP – Tipos de dados e
operadores
Nuno Miguel Gil Fonseca
[email protected]
PHP – Hypertext Preprocessor
Tipos de dados
Embora não seja necessário declarar os tipos de dados
das variáveis, estas estão associadas a um
determinado tipo. Existem em PHP os seguintes tipos:
Strings
“ola”, “o”, “bom dia como estás”
Integers
Números inteiros de -2147483647 a 2147483647
Floats
Números que possuam parte decimal: 2.58, 5.956546865
Booleans
true ou false
Arrays
Objects
Resources - Imagens, resultado de uma query de SQL, etc.
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
2
PHP – Hypertext Preprocessor
Tipos de dados (cont.)
Uma mesma variável pode assumir diferentes tipos,
consoante o tipo dos dados que lhe estão associados
<?php
$var = "teste";
print $var;
$var = 2;
print ($var+2);
?>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
3
PHP – Hypertext Preprocessor
Tipos de dados (cont.)
As Strings em PHP têm a característica especial de se
poder aceder directamente a um determinado
caracter da String. (a posição inicial é 0.)
<?php
$mystr = "ola?";
$mystr{0} = "O"; // ou $mystr[0] = "O";
print $mystr;
?>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
4
PHP – Hypertext Preprocessor
Tipos de dados (cont.)
Conversão automática de tipo
Como já foi referido, as variáveis em PHP não estão sempre
associadas a um tipo de dados único. Deste modo, o PHP tentará
converter o tipo das variáveis sempre que necessário e
possível... Por vezes ocorrem erros, como por exemplo,
converter de Array para String dentro de um print...
Embora o PHP trate de fazer as devidas conversões de
tipos, é possível fazer conversões explicitas de tipo de
<?php
dados
$str = "bomdia";
$int = (integer) $str;
?>
Outras opções de conversão: (bool), (string), (float)
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
5
PHP – Hypertext Preprocessor
Tipos de dados (cont.)
Scope das variáveis
Cada variável em PHP é valida numa determinada área.
É possível ter variáveis diferentes com o mesmo nome, desde
que em áreas disjuntas
Todas as variáveis que não são colocadas dentro de uma função
ou objecto, são consideradas globais
Superglobals
Existem determinadas variáveis que estão disponíveis em
qualquer ponto dos nosso scripts
Estas variáveis são Arrays que contêm determinados conjuntos
especiais de informação
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
6
PHP – Hypertext Preprocessor
Tipos de dados (cont.)
Superglobals (cont.)
$GLOBALS
Contém informação sobre todas as variáveis globais em uso no nosso script
$_GET
Contém informação sobre todas as variáveis enviadas por GET
$_POST
Contém informação sobre todas as variáveis enviadas por POST
$_FILES
Contém informação sobre todas as variáveis enviadas por POST
relacionadas com upload de ficheiros
$_COOKIE
Contém informação sobre todas as variáveis com o comportamento de
Cookies
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
7
PHP – Hypertext Preprocessor
Tipos de dados (cont.)
Superglobals (cont.)
$_REQUEST
Contém a mesma informação que $_GET, $_POST e $_COOKIES todas
juntas
$_SESSION
Contém informação sobre todas as variáveis armazenadas na sessão do
utilizador
$_SERVER
Contém informação sobre algumas variáveis do servidor
$_ENV
Contém informação sobre as variáveis de ambiente
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
8
PHP – Hypertext Preprocessor
Tipos de dados (cont.)
Superglobals (cont.)
Alguns exemplos das variáveis de servidor
HTTP_REFERER
HTTP_USER_AGENT
REQUEST_METHOD
QUERY_STRING
Estas variáveis podem ser acedidas da seguinte forma:
<?php
print($_SERVER["HTTP_REFERER"]);
?>
Importa referir que as variáveis disponíveis variam em função do
browser usado pelo utilizador e do software de servidor em que
o PHP está a correr (Apache != IIS)
Em http://koivi.com/apache-iis-php-server-array.php pode
consultar a lista completa de variáveis.
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
9
PHP – Hypertext Preprocessor
Referências
Quando se usa o operador “=” em PHP é criada uma
cópia do valor a ser atribuído à variável...
<?php
$a = 1;
$b = $a;
?>
Caso queiramos copiar a referência para o valor em
vez do valor em si, deve ser usado o operador “=&”
<?php
$a = 1;
$b = &$a;
?>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
10
PHP – Hypertext Preprocessor
Em determinadas situações, podemos ter a
necessidade de verificar se determinada variável
tem algum valor atribuído, para tal, recorre-se à
função isset()
<?php
$var;
if (!isset($var)) {
echo "Var não tem valor\n";
}
?>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
11
PHP – Hypertext Preprocessor
Por vezes é necessário verificar se determinada
variável possui algum valor atribuído, para além
de alguns valores por defeito
(“”,0,”0”,NULL,FALSE, arrays vazios, variáveis
criadas mas sem valor atribuído).
Nestas situações pode recorrer-se à função empty().
<?php
$var="";
if (empty($var)) {
echo "Var não tem valor\n";
}
?>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
12
PHP – Hypertext Preprocessor
A função empty poderá ser muito útil, por
exemplo para verificar se foi ou não escrito algo
num campo de formulário, por exemplo.
Tenha atenção que apesar da semelhança, a
função isset não permite fazer o mesmo que a
função empty e vice-versa.
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
13
PHP – Hypertext Preprocessor
Constantes
Para definir uma constante recorre-se à função
define()
Para aceder ao valor de uma constante, basta
referenciar o nome da constante
Contrariamente do que acontece com as variáveis, o
nome das constantes não começam por “$”
<?php
define("CURRENT_TIME", time());
print CURRENT_TIME;
?>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
14
PHP – Hypertext Preprocessor
Constantes (cont.)
Para saber se já foi atribuído um valor a uma
constante, recorre-se ao método defined()
<?php
if (defined("CURRENT_TIME")) {
/// código a ser executado
}
?>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
15
PHP – Hypertext Preprocessor
Operadores
Os operadores permitem alterar o valor de um
determinado “input”
+ soma
- subtracção
/ divisão
* multiplicação
. concatenação de Strings
! negação
++,-- incremento, decremento
= atribuição
&& E lógico
|| OU lógico
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
16
PHP – Hypertext Preprocessor
Operadores (cont.)
Por vezes queremos que uma variável fique com o
valor da aplicação de um operador sobre essa variável
+= o mesmo que : $var
-= o mesmo que : $var
*= o mesmo que : $var
/= o mesmo que : $var
.= o mesmo que : $var
.= "…";
=
=
=
=
=
$var
$var
$var
$var
$var
+
–
*
/
.
x;
x;
x;
x;
"uma
$var += x;
$var -= x;
$var *= x;
$var /= x;
string"; $var
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
17
PHP – Hypertext Preprocessor
Operadores (cont.)
Para fazer comparações, podemos recorrer aos
operadores:
== igual
> maior
>= maior ou igual
< menor
<= menor ou igual
!= diferente
=== idêntico (para além de ser igual, tem que ser do mesmo
tipo)
!== não idêntico
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
18
PHP – Hypertext Preprocessor
Operadores (cont.)
O operador ternário
<?php
$fase = ($idade < 16) ? "criança" : "adulto";
?>
...é o mesmo que:
<?php
if ($idade < 16) {
$fase = "criança";
} else {
$fase = "adulto";
}
?>
(c) Nuno Miguel Gil Fonseca - Escola Superior de Tecnologia e Gestão de Oliveira do Hospital - Programação para a Internet II
19
Download