você está aqui: Home  → Arquivo de Mensagens

PHP em linha de comando - passando parâmetros

Colaboração: David F A B Fante

Data de Publicação: 23 de junho de 2008

Eu estou desenvolvendo uma solução de gerenciamento de contas de hospedagens e revendas, boa parte já está pronta, mas tenho muito a fazer ainda. Uma das necessidades que tive logo de cara, é criar um script PHP que fosse executado em linha de comando, pois ele seria responsável por registrar mensalmente um novo débito e enviar e-mails de cobrança. Então eu configurei para rodar via CRON. Devido a uma medida de segurança eu queria que ele só rodasse se fosse validada uma variável. Este foi o meu problema.

Após ler e reler o manual on-line do PHP eu encontrei uma informação bem útil. Existe uma forma de informar e resgatar parâmetros em linha de comando. É retornado em forma de string. Essa é a parte chata mas vamos lá. Mãos a obra!

Como passar os parâmetros

  # php teste nome=SHZ idade=7

Veja que diferentemente do modo tradicional, os parâmetros não começam com <b>?</b> no começo e < b>&</b> entre os parâmetros. Usamos apenas espaço.

Como recuperar os valores dos parâmetros

  <?php
  for ($i=1; $i < $argc; $i++) {parse_str($argv[$i]);}
  echo "Olá ".$nome.", você tem ".$idade." anos de existência!";
  ?>

O valor $argc é a variável que retorna a quantidade de argumentos enviados pela linha de comando. É interessante dizer que o nome do arquivo também conta como um argumento. $argv é a array que contem os valores, agora precisamos criar uma variável com cada valor, pois em uma linha assim:

  # php teste.php nome=SHZ

A variável $argv[1] terá o valor de nome=SHZ. Ao usar a função parse_str poderemos acessar o valor com o nome do argumento, ou seja: $nome terá o valor de SHZ, e foi o que fizemos, com nome e idade.



 

 

Veja a relação completa dos artigos de David F A B Fante

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script