VARIAVEIS E CONSTANTES Antes de falarmos das variáveis em constantes é necessário falar dos tipos de dados que existem no PHP. 2.1 Tipos de Dados Os tipos de dados suportados pela linguagem PHP dividem-se em básicos, compostos e especiais. Os tipos de dados básicos dividem-se em quatro. 2.1.1 Boolean O booleano corresponde a um tipo de dado básico representado por TRUE (VERDADEIRO) ou FALSE(FALSO). Introduzido no PHP4.0, ele é considerado o tipo de dado mais simples. Abaixo segue exemplo, de como usarmos: <? if($x == 1){ $var = true; }else{ $var = false; } Qualquer valor convertido para booleano será TRUE, exceto os seguintes: 2.1.1 O inteiro zero(0); 2.1.2 Um valor booleano FALSE; 2.1.3 String ( 0 ) além de string vazia 2.1.4 Um ponto flutuante zero(0.0); 2.1.5 Um dado de tipo especial, NULL, o qual inclui variáveis não definidas; 2.1.6 Um Array sem elementos e um objeto sem elementos membros; 2.1.2 Float O tipo float também conhecido como dado básico Double, ou números reais, que se referem a números de ponto flutuante. É utilizado com valores monetários. Esse número é definido confor me a plataforma que é utilizada. O número máximo corresponde a aproximadamente 1.8E308, sendo que a precisão é de 14 decimais digitais de um valor comum, ou seja, número no formato IEEE referente a 64 BITS. <? $var = 10.12; Atenção não usar com,(vírgulas) para exibição de valores em reais, criaremos um algoritmo que irá tratar o mesmo. 2.1.3 Integer São tipos de dados numéricos com valor inteiro, estão os números do conjunto Z, isto é, (...-4,-3,-2,-1,0,1,2,3,4,...}. Os tipos de dados integer apresentam limites. Quando esses limites são ultrapassados, ou seja, quando utilizamos um número além do limite determinado para este tipo de dado, esse número será interpretado como um ponto flutuante. É importante sabermos que na linguagem PHP não existe um operador de divisão inteira. Sendo assim, para truncar um número é preciso moldar o valor para integer. <? $var = 5; 2.1.4 String Este tipo de dado básico corresponde a uma série de caracteres, sendo que um caractere diz respeito a um byte na linguagem PHP. Dessa forma, temos que uma string possui 256 caracteres distintos e possíveis. E a maneira mais fácil de entender, o que é uma string, é que uma string são conjuntos de caracteres que geralmente fazem parte de um texto e estão compreendidos dentro de aspas, como mostra o exemplo abaixo. $var = "Olá mundo"; echo $var; Há três maneiras distintas de construirmos a sintaxe de uma string. Podemos utilizar aspas simples, aspas duplas ou sintaxe heredoc. 2.1.4.1 Aspas simples Ao delimitar uma string entre aspas simples ( ) estamos utilizando o modo mais simples de especificá-la. echo Testando 1234 ; Quando a aspas simples fizer parte do texto, deve-se sinalizar antes o sinal \. Veja o exemplo abaixo: echo Veja como fica \ aspas simples\ no PHP. ; O resultado será Veja como fica aspas simples no PHP 2.1.4.2 spas duplas ( ) 1
spas duplas ( ) é similar a aspas simples ela é mais usual utilizada para delimitar uma string Com aspas duplas é possíve l também realizar a interpolação de variáveis, ou seja, é possível que uma variável receba o valor de outra. Geralmente aspas duplas são usadas como delimitadores. Com isso, uma sequência de caracteres, podem ser incluídas em dados alfanuméricos. Na tabela a seguir, apresentaremos essas sequência de caracteres de controle. \ = insere aspas duplas no texto \\ = insere barra invertida no texto \n = indicação de nova linha \r = indicação de retorno \t = indicação de tabulação \$ insere o símbolo $ no texto \xnn indicação de caractere ASCII no formato hedaximal \Onnn indicação de caractere ASCII no formato octal Seguem alguns exemplos echo "Testando 1234"; echo "Veja como fica \"aspas duplas\" no PHP."; O resultado será Veja como fica aspas simples no PHP echo Veja como aparece \$ no PHP. ; Veja como aparece $ no PHP. 2.1.2.3 Sistema heredoc O sistema heredoc é outro sistema de delimitar string, esta sintaxe é representada pela seqüência de caracter (<<<), em seguida são informadas a string e o mesmo identificador, indicará o final da delimitação. Porém existem regras de uso. O nome do identificador deve iniciar com um caractere sublinhado ou não-numérico. Além disso, em sua composição este nome pode conter palavras apenas caracteres sublinhados e alfanuméricos; Ao escrever o identificador de fechamento, é necessário que ele esteja na primeira coluna da linha; A linha em que o identificador de fechamento se encontra não pode conter outros caracteres, a não ser o ponto e vírgula (;). $teste = <<< $teste<<<; Esse sistema para delimitar string não é muito utilizado, o mais utilizado são mesmo as aspas duplas ( ) 2.2- Variáveis O que são variáveis? O jeito mais fácil de entender é um elemento que ao redor do script tem seu valor alterado, o termo técnico diz que uma variável é um espaço de memória utilizado no computador a fim de armazenar um valor em caráter temporário. Na linguagem PHP, especificamos uma variável através do caractere cifrão ($), após esse caractere coloca-se o nome da variável, igual o exemplo abaixo: $v ariavel Existem algumas regras para criação de nomes de variáv eis que devemos seguir. Não usar caractere especial, pois o PHP não reconhece os mesmos, ou seja, não usar acentuação, cê-cedilha; Definir o uso de caixa alta ou baixa, pois o PHP é case sensitive, ou seja, se escrever o nome de uma variável em caixa alta, deverá ser chamada em caixa alta, pois se escrever a mesma palavra em caixa baixa, o PHP entenderá que se trata de outra variável; Pode-se usar hífem e underline para nome de variáveis, ambos associados posteriormente ou entre um conjunto de letras; NUNCA USAR ESPAÇO ENTRE UMA LETRA E OUTRA, POIS O PHP ENTENDERÁ COMO SENDO OUTRA VARIÁVEL OU outro elemento; Veja abaixo alguns exemplos de nomes de variáveis dentro da regra; $_VARIAVEL; $_variavel; $variavel; $VARIAVEL; $Variavel; $_1variavel; $variavel1; 2
Abaixo maneiras erradas de nomes de variáveis: $ vari avel; (contém espaço) $variável; (contém acento) AULA 2 VARIAVEIS E CONSTANTES 2.2.1 Tipo de variáveis A linguagem PHP oferece quatro tipos distintos de variáveis, que são as variáveis alfanuméricas, as numéricas, o array e os objetos. Vejamos a seguir, detalhes de cada um desses tipos. 2.2.1.1 Alfanuméricas : Essas são variáveis do tipo string. Elas são delimitadas tanto por aspas duplas, como aspas simples, veja o exemplo: $nome = Daniela $ faculdade= FMU 2.2.1.2- Numéricas: Ao atribuir um valor numérico a uma variável estamos definindo uma variável do tipo numérica. Cujos valores podem ser float (ponto flutuante) ou inteiros. Veja exemplos abaixo. $var = 1; $m = 2; $valor = 12.50; 2.2.1.3- Array http://php.net/manual/pt_br/book.array.php : É uma estrutura de armazenamento que possui um identificador e pode armazenar mais de um valor ao mesmo tempo. Muito conhecido como MATRIZ, que é uma variável com vários valores, dependendo do índice acessado um v alor será retornado. Cada array está associado a um índice,que indica a posição de armazenamento de um elemento array na memória. Esse índice pode ser tanto um texto, quanto um número, e está delimitado entre colchete ([]). Ele serve geralmente para automatizar tarefas nos programas, utilizamos arrays, que são muito úteis em situações como a abaixo. $dia[1] = "Segunda-feira"; $dia[2] = "Terça-feira"; $dia[3] = "Quarta-feira"; $dia[4] = "Quinta-feira"; $dia[5] = "Sexta-feira"; $dia[6] = "Sábado"; $dia[7] = "Domingo"; Para imprimir na tela Hoje é domingo em PHP seria?php Hoje é $dia*7+ Caso não seja especificado um índice para ao array, o PHP procura pelo último declarado e incrementa o valor. E se não houver nenhum índice declarado o primeiro será 0. Veja o exemplo abaixo: $dia[] = "Segunda-feira"; $dia[] = "Terça-feira"; $dia[] = "Quarta-feira"; Neste caso o valor atribuído a segunda-feira será 0, terça 1 e quarta 2, e assim por diante. O código ficaria da seguinte maneira. $dia[0] = "Segunda-feira"; $dia[1] = "Terça-feira"; $dia[2] = "Quarta-feira"; Agora veremos array determinados por texto: $vetor['pais'] = "Brasil"; $vetor['cidade'] = "São Paulo"; $vetor['idade'] = 458; echo $vetor['pais']."<br>"; echo $vetor['cidade']."<br>"; echo $vetor['idade']."<br>"; O resultado será: Brasil São Paulo 458 3
Temos também as matrizes, as quais se referem às arrays multidimensionais. Elas possuem dois ou mais índices que indicam a posição em que estão armazenadas na memória. Seria como armazenar categoria e subcategoria. Veja abaixo um exemplo: $curso['informatica']['ti'] = "Curso destinado a interessados em Teconogia da Informação"; $curso['informatica']['redes'] = "Curso destinado a interessados em Redes de Computadores"; $curso['administracao']['adm'] = "Curso destinado a interessados em Administrar uma empresa"; echo $curso['informatica']['ti']; Aparecerá na tela Curso destinado a interessados em Teconogia da Informação. 2.2.1.4- Objeto: O objeto é criado, quando instanciamos uma classe e podemos através do objeto acessar seus métodos e atributos, porém iremos abordar esse tema exclusivamente no capítulo 5 e 6. 2.2.2 Variáveis Pré-Definidas No PHP há uma grande quantidade de variáveis pré-definidas. Elas podem ser utilizadas por qualquer script que seja executado nesta linguagem. São um conjunto de array predefinidas é disponibilizado a partir do PHP 4.1.0. O conteúdo desse conjunto é composto pelas variáveis do servidor de internet, caso ele exista, além das entradas referentes ao usuário e das variáveis de ambiente. Esses arrays são globais, isto é, ficam disponíveis em qualquer escopo de forma automática. VARIAVEIS globais também são conhecidos como superglobais ou autoglobais. A relação completa pode ser obtida através do link: http://www.php.net/manual/pt_br/reserved.variables.php Abaixo seguem os mais usados. $GLOBAIS[] Surgiu a partir do PHP 3, possui uma referencia a todas variáveis disponibilizadas no escopo de um script. As chaves do ARRAY em questão são deter minadas pelos nomes das variáveis globais. $_COOKIE[] Refere-se às variáveis de COOKIE. $_ENV[] Refere-se às variáveis que estão disponíveis no script do ambiente de execução. $_FILES[] Refere-se às variáveis postadas para o script através da transferência de arquiv os pelo PHP. UPLOAD $_GET[] Refere-se às variáveis postadas para o script através do método HTTP GET. Ou seja pelo navegador. $_POST[] Refere-se às variáveis postadas para o script através do método HTTP POST. Muito utilizadas em formulários. $_REQUEST[] Refere-se às variáveis postadas para o script através dos seguintes mecanismos, GET e ou POST $_SERVER Variáveis internas do servidor, no item 2.2. iremos abordar as mesmas mais efetivamente. $_SESSION Variáveis retornadas através da gravação de uma sessão, iremos ver com mais detalhes no capitulo 5. 2.2.3 Concatenação de variáveis e valores Em PHP é possível concatenar strings com variáveis. Para tanto se deve usar o símbolo ponto(.) e depois aspas duplas. Veja abaixo um exemplo: $variavel = "variável"; $texto = "texto"; echo "Este texto irá explicar como concatenar uma ".$variavel." com um ".$texto."."; Também é possível concatenar variáveis em várias linhas de script, por exemplo: $texto = Hoje é domingo. ; $texto.= <br> E está um belo dia. ; O resultado será: Hoje é domingo. E está um belo dia. 2.2.4 Variáveis de Ambiente e ou Variáveis de Servidor São variáveis de ambiente que podem nos informar diversas informações de ambiente, como IP, tipo de nav egador. Para usá-las, deve-se usar o $ SERVER* nome da variavel + Segue abaixo os tipos de variáveis de servidor mais usados a relação completa está em 4
http://www.php.net/manual/pt_br/reserved.variables.server.php. 'DOCUMENT_ROOT' O diretório raiz sob onde o script atual é executado, como definido no arquivos de configuração do servidor. 'HTTP_REFERER' O endereço da página que o usuário acessou antes de entrar na página atual. Essa diretiva é informada pelo agente do usuário. Nem todos os browsers geram esse header, e alguns ainda possuem a habilidade de modificar o conteúdo do HTTP_REFERER como recurso. Em poucas palavras, não é confiável. Porém é de muito bom uso de Login e senha, quando o usuário acessa algo restrito, ao se logar volta a página que estava tentando acessar, essa variável é responsável por isso. 'HTTP_USER_AGENT' Retorna qual navegador o usuário está usando. Muito adequado para saber qual navegador o usuário está usando. 'REMOTE_ADDR' O endereço IP de onde o usuário está visualizado a página atual. Excelente para usar em formulários e saber o IP do usuário no ato do preenchimento do formulário. 'SCRIPT_FILENAME' O caminho absoluto o script atualmente em execução. 2.2.4 Variáveis do tipo $_GET Variáveis do tipo GET são adquiridas pe la URL. Exemplo: arquivo.php?variavel=teste se eu escrever echo $_GET[' variavel '] na tela aparecerá teste, e se eu trocar por outra palavra também aparecerá. Qual o problema desse tipo de variável, ele tem um limite de até 2000 caracteres, o usuário enxerga na URL tudo que foi passado como parâmetro e pode abrir o site para Injeções de SQL através de adição de outras variáveis da URL. Ultimamente, esse tipo de variável não tem sido usado e sim rotas de URL através de ReWriter URL, algo que veremos no capítulo 9. 2.2.5 Variáveis do tipo $_POST São variáveis recuperadas através de formulários que enviam dados através do method post. Esse formato é adequado para passar variáveis protegendo seu conteúdo e tendo um limite bem maior de caracteres. Dessa maneira, o usuário não verá em sua barra de endereços aquele endereço enorme contendo uma cadeia de caracteres, ele verá apenas o endereço do formulário que foi enviado e os dados serão protegidos. Este método também não possui limitação de caracteres dos dados enviados, sendo ideal para formulários que possuem muitas informações a serem processadas. Também é possível enviar imagens e outros arquivos através desse método, basta acrescentar no form a informação enctype="multipart/form-data", algo que não é possível através do método GET. 2.2.6 Variáveis do tipo $_SESSION São variáveis de sessão do navegador do ato que está acessando o mesmo. Cada vez que se fecha o navegador e abre novamente uma nova sessão é registrada. A vantagem de trabalhar com sessões é que posso armazenar variáveis temporárias que serão usadas enquanto o usuário visitar o site. Você pode salvar valores na sessão e acessá-los enquanto estiver navegando em várias páginas apenas iniciando a sessão no escopo da página, ao fechar o navegador a sessão é encerrada e os valores são perdidos. Esse tipo de variável é muito usado sistemas de login e senha, carrinho de compras, as variáveis também podem ser destruídas através de funções do PHP. Veja abaixo algumas funções de sessão. session_cache_expire Retorna o prazo do cache atual session_cache_limiter Obtém e/ou define o limitador do cache atual session_commit Sinônimo de session_write_close session_decode Decifra dado de sessão de uma string session_destroy Destrói todos os dados registrados em uma sessão session_encode Codifica os dados da sessão atual como uma string session_get_cookie_params Obtém os parâmetros do cookie da sessão session_id Obtém e/ou define o id de sessão atual session_is_registered Descobre se uma variável global está registrada numa sessão session_module_name Obtém e/ou define o módulo da sessão atual session_name Obtém e/ou define o nome da sessão atual session_regenerate_id Atualiza o id da sessão atual com um novo gerado session_register_shutdown Session shutdown function session_register Registrar uma ou mais variáveis globais na sessão atual session_save_path Obtém e/ou define o save path da sessão atual session_set_cookie_params Define os parâmetros do cookie de sessão session_set_save_handler Define a sequência de funções de armazenamento session_start Inicia dados de sessão session_status Returns the current session status session_unregister Desregistra uma variável global da sessão atual session_unset Libera todas as variáveis de sessão session_write_close Escreve dados de sessão e termina a sessão 24 5
Um exemplo de como usar sessão. session_start(); $_SESSION['nome'] = " Daniela"; echo $_SESSION['nome']; AULA 2 VARIAVEIS E CONSTANTES Para destruir uma variável de sessão seria session_unset($_session['nome']); Veremos exemplos de uso desse tipo de variável nos capítulos 17 a 19. 2.2.7 Variáveis do tipo $_FILE Variáveis do tipo $_FILE, são arrays que são obtidos através do envio de arquivos enviados pelo mé todo POST para UPLOAD de arquivos no servidor. Por exemplo enviei a foto.jpg que tem 543k no campo FO TO o que a variável $_FILE vai devolver para a tela é: $_FILES['foto']['name'] O nome original do arquivo no computador do usuário, ou seja, foto.jpg. $_FILES['foto']['type'] O tipo do arquivo. Nesse caso será "image/jpg". $_FILES['foto']['size'] O tamanho, em bytes, do arquivo, nesse caso 543k. $_FILES['foto']['tmp_name'] O nome temporário do arquivo, como foi guardado no servidor, terá o caminho temporário e o nome, muito importante quando formos gravar o arquivo no lugar final. $_FILES['foto']['error'] O código de e rro associado a este upload de arquivo. Se houver erros não fará upload e somente esse item será preenchido. Veremos mais sobre esse tipo de variável no capitulo 19. 2.2.8 Testar se variável existe ou está vazia. Para testar se uma variável existe e se já foi declarada usamos a função ISSET, ela testa se a variável existe, exemplo: if(isset($_post['nome'])){ echo $_POST['nome']; } Agora se queremos saber se uma varíavel é vazia, usamos EMPTY, e la irá testar se 6
a variável veio com o conteúdo vazio. if(empty($_post['nome'])){ echo "Não existe o nome!"; } AULA 2 VARIAVEIS E CONSTANTES 2.3 Constantes: Constante é um valor pré-definido no início do script e não varia até o término do script. Abaixo seguem características de uma constante: Para definir uma constante utilizamos a função define(). Sendo que ela não pode ser definida por assimilação como acontece com uma variável. A constante não é prefixada com símbolo com símbolo ($); Para obter seu valor é necessário apenas especificar seu nome. Contudo se for preciso obter o valor de uma constante de maneira dinâmica, a função contant() é utilizada para realizar a leitura desse valor. O valor de uma constante, só pode ser do tipo básico, ou seja, string, boolean, float e integer. Para obter uma lista de constantes que já estão definidas, utilizamos a função get_defined_constants(). A função defined() é utilizada para verificar se uma constante foi definida. Como usar? A função define() tem a finalidade de definir uma constante. Para compreendermos melhor essa função, observamos a sintaxe bool define(string name, mixed value [boll case_insensitive]) Name Esse parâmetro determina o nome atribuído à constante Value Esse parâmetro determina o valor atribuído à constante Case_insenstitive A constante definida como case-insensitive caso o valor atribuído seja TRUE. Por padrão, a constante é definida como case-sensitive. Este parâmetro é de caráter opcional. Para que usamos constantes? Quando temos a necessidade de direto chamar um valor pré-estabelecido, um bom exemplo de constante é a definifição 7
do titulo principal de um site, pois sempre que formos colocar o título chamamos a mesma. Exemplo: define( title, Titulo do site do cliente ); Na página do cliente quando formos usar a tag titulo usaríamos assim: <title><?= title </title> Se houver a necessidade de um subtítulo usaríamos assim: <title><?= $title <?= title </title> No capítulo 7 abordaremos bem detalhado como criar títulos e metatags em PHP para os templates HTML. 2.3.2 Constantes Pré-definidas Embora possamos definir constantes, existem algumas pré-definidas. http://php.net/manual/pt_br/errorfunc.constants.php Abaixo seguem as mais usadas, todas estão no site do PHP E-ERROR Essa constante exibe um erro quando este acontece em um script. E_NOTICE Exibe uma ocorrência em um script, a qual não pode ser erro. Ela identifica e não para o script. E-PARSE Esta constante tem a função de exibir um erro de script relacionado à sua sintaxe. Quando acontece a execução do script é paralisada. E-WARNING Esta constante é responsável por exibir as mensagens de alerta enviadas pelo PHP. Quando as mensagens são exibidas, a execução do script não é paralisada. PHP_VERSION Esta constante tem a função de apresentar a versão atual do PHP. 8