Copyright">
Linguagem PHP
Linguagem PHP
Linguagem PHP
O QUE É O PHP?
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
2
web para processar todos os seus arquivos HTML com o PHP, e então não há
como os usuários dizerem o que você tem na sua manga.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
3
(Unix, Linux) ou o Agendador de Tarefas (no Windows). Esses scripts podem ser
usados também para rotinas de processamento de texto simples.
Com PHP você não está limitado a gerar somente HTML. As habilidades
do PHP incluem geração de imagens, arquivos PDF e até animações Flash
(utilizando libswf e Ming) criados dinamicamente, on the fly. Você pode
facilmente criar qualquer texto, como XHTML e outros arquivos XML. O PHP
pode gerar esses arquivos e salvá-los no sistema de arquivos, em vez de mostrá-
los em tela, formando um cache no lado do servidor para seu conteúdo dinâmico.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
4
camada de abstração como o PDO ou conectar a qualquer banco de dados que
suporte o padrão "Open Database Connection" usando a extensão ODBC.
Outros bancos de dados podem utilizar cURL ou sockets, como o CouchDB.
Antes de começar a instalar o PHP, primeiro você deve saber o que você
deseja fazer com ele. Existem três principais formas de se usar o PHP.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
5
no Windows). Você também pode alugar um host em uma companhia qualquer.
Dessa maneira, você não precisa configurar nada por conta própria, apenas
escrever os seus scripts PHP, enviar (upload) para o servidor que você alugou,
e ver os resultados no seu browser.
No caso de você instalar o servidor e o PHP por contra própria, você tem
duas escolhas para o método de conexão do PHP com o servidor. Para muitos
servidores o PHP tem uma interface direta de módulo (também chamada de
SAPI). Entre esses servidores estão Apache, Microsoft Internet Information
Server, Netscape e iPlanet. Muitos outros servidores têm suporte para ISAPI, a
interface de módulo da Microsoft (OmniHTTPd por exemplo). Se o PHP não tiver
suporte de módulo para o seu servidor web, você também pode usá-lo como
processador CGI ou FastCGI. Isso significar configurar seu servidor para usar
executáveis CGI do PHP para processar todas as requisições a arquivos PHP
no servidor.
Com o PHP, você também pode criar aplicações para desktop com
interface gráfica (GUI) usando a extensão PHP-GTK. Isso é uma abordagem
completamente diferente da criação de páginas web, já que a saída não é em
HTML, mas o manuseio de janelas e objetos dentro delas.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
6
O CLI SAPI é ativado por padrão usando --enable-cli, mas pode ser
desativado usando a opção --disable-cli quando se executa o comando
./configure durante o processo de compilação do PHP.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
7
Diferenças em relação a outros SAPIs
Embora o CGI SAPI forneça uma maneira de suprimir os cabeçalhos HTTP, não
existe nenhuma forma equivalente de habilitá-los no CLI SAPI.
Ele não altera o diretório atual para aquele no qual o script está sendo
executado (As opções -C and --no-chdir são mantidas por compatibilidade)
• Existem certas diretivas do php.ini que são sobrescritas pelas do CLI SAPI
porque elas não fazem sentido em um ambiente de linha de comando:
Valor padrão
Diretiva Comentário
do CLI SAPI
html_errors false Tem como padrão false, ja que pode ser bem difícil ler mensagens de erro na
linha de comando quando elas estão misturadas com tags HTML não
interpretadas.
max_execution_time 0 (unlimited) O PHP em um ambiente de linha de comando tende a ser usado com um
número de propostas muito mais diversas do que para aplições web típicas, e
como essas formas podem ter muito mais longevidade, o tempo máximo de
excução é definido como sem limite.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
8
Diretivas do php.ini sobrescritas
Valor padrão
Diretiva Comentário
do CLI SAPI
register_argc_argv true Definir isso como true significa que o script executado a partir
do CLI SAPI sempre terá acesso ao argc (número de argumentos passados
para a aplicação) e argv (array contendo os valores dos argumentos).
output_buffering false Apesar do valor no php.ini ser explicitamente definido como false, as funções
de Output buffering estão disponíveis.
max_input_time false O PHP CLI não suporta GET, POST ou upload de arquivos.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
9
A lista de opções de linha de comando fornecidas pelo binário do PHP pode ser
requisitada a qualquer momento bastando executar o PHP com a opção -h:
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
10
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
11
Opções de linha de comando
-a --interactive Executa o PHP interativamente. Para mais informações veja a seção Shell interativo.
-b --bindpath Vincula o Path para o modo externo do servidor FASTCGI (apenas em CGI).
-T --timing Calcula o tempo de execução do script repetidas quantidades de vezes (apenas em CGI).
-c --php-ini Especifica um diretório para procurar pelo php.ini, ou um arquivo INI personalizado (que
não precisa se chamar php.ini), exemplo:
Se essa opção não for especificada, o php.ini será procurado no local padrão.
-n --no-php-ini Ignore o php.ini completamente.
-d --define Defina um valor personalizado para qualquer uma das diretivas de configuração
permitidas em arquivos php.ini. A sintaxe é:
-d configuration_directive[=value]
# Omitting the value part will set the given configuration directive to "1"
$ php -d max_execution_time
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(1) "1"
# Passing an empty value part will set the configuration directive to ""
php -d max_execution_time=
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(0) ""
# The configuration directive will be set to anything passed after the '=' character
$ php -d max_execution_time=20
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(2) "20"
$ php
-d max_execution_time=doesntmakesense
-r '$foo = ini_get("max_execution_time"); var_dump($foo);'
string(15) "doesntmakesense"
-e --profile-info Ativa o mode de informação extendido, para ser usado por um debugger/profiler.
-f --file Lê e executa o arquivo especificado. A opção -f é opcional e pode ser omitida - fornecer
somente o nome do arquivo a ser executado é suficiente.
Nota:
Para passar argumentos para um script, o primeiro argumento deve ser --, do contrário o
PHP irá interpretá-lo como opções do PHP.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
12
Opções de linha de comando
-h and --help e --usage Exibe uma lista de opções de linha de comando com a descrição do seu funcionamento.
-?
-i --info Invoca phpinfo(), e exibe o resultado. Caso o PHP não esteja executando corretamente, é
aconselhável usar o comando php -i e verificar se alguma mensagem de erro é
informada antes ou no lugar da tabela de informações. Esteja ciente de que ao usar o
modo CGI a saída será em HTML e portanto bastante longa.
-l --syntax-check Fornece uma forma conveniente de realizar uma verificação da sintaxe no código PHP
informado. Em caso de sucesso, o texto No syntax errors detected in <filename> é
disparado para a saída padrão da linha de comando e o código de retorno é 0. Em caso
de falha, o texto Errors parsing <filename> assim como as mensagens adicionais de erros
são retornados para a saída padrão do terminal e o código retornado é -1.
Isso não irá encontrar error fatais (como funções não definidas). Use a opção -f para
também testar os erros fatais.
Nota:
Essa opção não funciona em conjunto com a opção -r.
-m --modules Exemplo #1 Retorna os módulos PHP e Zend embutidos e carregados
$ php -m
[PHP Modules]
xml
tokenizer
standard
session
posix
pcre
overload
mysql
mbstring
ctype
[Zend Modules]
-r --run Habilita a execução do código PHP incluído diretamente na linha de comando. As tags de
abertura e fechamento do PHP (<?php e ?>) não são necessárias e irão causar um erro
de leitura caso sejam incluidas.
Nota:
Muito cuidado precisa ser tomado ao usar essa forma para que o PHP não colida com a
substituição de variáveis de linha de comando realizadas pelo seu ambiente de linha de
comando.
Exemplo #2 Recebendo um erro de sintaxe ao usar aspas duplas
$ php -r "$foo = get_defined_constants();"
PHP Parse error: syntax error, unexpected '=' in Command line code on line 1
Parse error: syntax error, unexpected '=' in Command line code on line 1
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
13
Opções de linha de comando
O problema aqui é que o sh/bash realiza substituições de variáveis mesmo usando aspas
duplas ". já que a variável $foo provavelmente não está definida, ocorrerá uma
substituição para nada, que resulta no seguinte código passado para o PHP executar:
A maneira correta é usar aspas simples '. Variáveis em strings de aspas simples não são
substituidas pelo sh/bash.
Se estiver usando um ambiente de linha de comando que não seja sh/bash, outros
problemas podem ser encontrados - caso necessário, um aviso de bug pode ser aberto
em » https://bugs.php.net/. Ainda assim é muito fácil encontrar problemas ao tentar usar
variáveis (de linha de comando ou PHP) em código de linha de comando, ou usando
barra invertida para escapar, por isso tenha muito cuidado quando fizer isso. Você foi
avisado!
Nota:
-r está disponível no CLI SAPI, mas não no CGI SAPI.
Nota:
Essa opção é normalmente utilizada com código muito básico, portanto algumas diretivas
de configuração (como auto_prepend_file e auto_append_file) são ignoradas nesse
modo.
-B --process-begin O código PHP executado antes do processamento do stdin. Incluído na versão 5 do PHP.
-R --process-code Código PHP para ser executado a cada linha de entrada. Incluído na versão 5 do PHP.
Existem duas variáveis especiais disponíveis nesse modo: $argn e $argi. $argn conterá a
linha que está sendo processada pelo PHP no momento, enquanto $argi irá conter o
número da linha.
-F --process-file Arquivo PHP para ser executado a cada linha de entrada. Incluído na versão 5 do PHP.
-E --process-end Código PHP para ser executado após o processamento da entrada. Incluído na versão 5
do PHP.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
14
Opções de linha de comando
$ find my_proj | php -B '$l=0;' -R '$l += count(@file($argn));' -E 'echo "Total Lines: $l\n";'
Total Lines: 37328
-S --server Inicia o servidor embutido do PHP. Disponível a partir da versão 5.4.0 do PHP.
-t --docroot Específica a raiz do documento para o servidor embutido do PHP. Disponível a partir da
versão 5.4.0 do PHP.
Nota:
Essa opção não funciona em conjunto com a opção -r.
-v --version Exemplo #5 Use -v para requisitar o nome SAPI e a versão do PHP e Zend Engine
$ php -v
PHP 5.3.1 (cli) (built: Dec 11 2009 19:55:07)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies
-w --strip Exibe o código com comentários e espaços em branco removidos.
Nota:
Essa opção não funciona em conjunto com a opção -r.
-z --zend-extension Carrega uma extensão Zend. Se somente um nome de arquivo for fornecido, O PHP irá
tentar carregar essa extensão a partir do diretório padrão de extensões do seu sistema,
(geralmente /etc/ld.so.conf em sistemas linux, por exemplo). Ao passar o nome do
arquivo juntamente com seu caminho absoluto não usará o diretório padrão de
extensões. Um caminho relativo incluindo informações de diretórios dirá ao PHP para
tentar carregar a extensão relativamente ao diretório atual.
--ini Exibir nomes de arquivos de configuração e diretórios verificados. Disponível a partir da
versão 5.2.3 do PHP.
$ php --ini
Configuration File (php.ini) Path: /usr/dev/php/5.2/lib
Loaded Configuration File: /usr/dev/php/5.2/lib/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)
--rf --rfunction Exibe informações sobre a função ou método de objeto informado (como por exemplo o
número e nome dos parâmetros). Disponível a partir da versão 5.1.2 do PHP.
Essa opção só está disponível se o PHP for compilado com suporte a Reflexão.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
15
Opções de linha de comando
- Parameters [2] {
Parameter #0 [ <required> $var ]
Parameter #1 [ <optional> $... ]
}
}
--rc --rclass Exibe informações sobre uma determinada classe (lista de constantes, propriedades e
métodos). Disponível a partir da versão 5.1.2 do PHP.
Essa opção só está disponível se o PHP for compilado com suporte a Reflexão.
- Constants [0] {
}
- Properties [0] {
}
- Methods [3] {
Method [ <internal> public method close ] {
}
Essa opção só está disponível se o PHP for compilado com suporte a Reflexão.
- Functions {
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
16
Opções de linha de comando
date
Existem três formas de fornecer código PHP para ser executado pelo CLI SAPI:
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
17
As duas formas (usando ou não a opção -f) executam o arquivo
my_script.php. Note que não existe restrição sobre quais arquivos podem ser
executados; em particular, o nome do arquivo não precisa conter a extensão
.php.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
18
somente um hífen (-). O mesmo é verdadeiro se o código e redirecionado pelo
STDIN.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
19
execução do arquivo estejam apropriadamente definidos (exemplo. chmod +x
test), o script poderá ser executado como qualquer outro script shell ou perl:
Como pode ser visto, nesse caso nenhum cuidado especial precisa ser
tomado ao passar parâmetros começando com -.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
20
do PHP. A primeira linha especial shebang para Unix não causa nenhum efeito
no Windows (Já que é formatada como um comentário PHP), então programas
multiplataforma podem ser escritos com a inclusão disso. Um exemplo simples
de programa de linha de comando em PHP é mostrado abaixo.
O script acima inclui a shebang na primeira linha para indicar que esse
arquivo deve ser executado pelo PHP. Nos estámos trabalhando com a versão
CLI aqui, então nenhum cabeçalho HTTP será exibido.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
21
script como foi digitado na linha de comando. Do contrário, o argumento é exibido
da forma como foi escrito.
Para executar o script acima em sistemas Unix, ele deve ser tornado
executável, e chamado simplesmente com script.php echothis ou script.php -h.
Em sistemas Windows, um arquivo batch similar ao seguinte pode ser criado
para essa tarefa:
Input/output streams
O CLI SAPI define algumas constantes para I/O streams com o objetivo
de tornar a programação em linha de comando um pouco mais fácil.
<?php
$stdin = fopen('php://stdin', 'r');
?>
Se voê desejar ler uma única linha do stdin, você pode usar
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
22
Constantes específicas da CLI
Constante Descrição
<?php
$line = trim(fgets(STDIN)); // reads one line from STDIN
fscanf(STDIN, "%d\n", $number); // reads number from STDIN
?>
STDOUT Um stream já aberto para o stdout. Isso evitar ter que abri-lo com
<?php
$stdout = fopen('php://stdout', 'w');
?>
STDERR Um stream já aberto com stderr. Isso evita ter que abri-lo com
<?php
$stderr = fopen('php://stderr', 'w');
?>
Como dito acima, você não precisa por exemplo abrir um stream para
stderr por si mesmo, basta usar a constante ao invés do recurso do stream:
Você não precisa fechar explicitamente esses streams, já que eles serão
automaticamente fechados pelo PHP quando o script terminar.
Shell interativo
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
23
Exemplo #1 Executando código usando o shell interativo
Pressionar a tecla tab duas vezes quando tiver mais de uma sugestão de
complemento resultará numa lista desses complementos.
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
24
O shell interativo armazena seu histórico que pode ser acessado usando
as teclas para cima e para baixo. O histórico é salvo no arquivo ~/.php_history.
A opção cli.prompt:
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).
25
A configuração cli.prompt suporta algumas sequências de escape:
Proibida a reprodução total ou parcial desse material ou divulgação com fins comerciais ou não, em qualquer
meio de comunicação, incluindo a internet sem autorização do titular da obra de acordo com a Lei nº 9.610 de
19 de fevereiro de 1998 (Lei dos Direitos Autorais).