-
Notifications
You must be signed in to change notification settings - Fork 51
Como executar o código Python no PHP
O usuário chapeupreto fez uma versão do script totalmente em PHP baseada em nosso script Python: https://github.com/chapeupreto/sinesp
Muita gente me perguntou como obter os resultados gerados pela biblioteca Python do SINESP Client no PHP.
Aqui descrevo como chamar um script simples em Python (baseado no exemplo que tem no README da nossa biblioteca) para enviar os dados obtidos em formato JSON para nossa aplicação em PHP, onde iremos receber e utilizar da melhor forma possível.
Lembre-se de instalar a biblioteca com
pip install sinesp-client
Vamos criar um script chamado placa.py
, que será executado em linha de comando e receberá a placa do veículo como primeiro argumento:
import json
import sys
from sinesp_client import SinespClient
sc = SinespClient()
plate = sys.argv[1]
result = sc.search(plate)
json_result = json.dumps(result)
print(json_result)
Para chamar/executar nosso script em Python a partir do PHP e retomar os resultados é bem simples também:
Cuidado com o comando shell_exec, ele deixa seu código suscetível a injections de código malicioso.
<?php
$placa = 'M**4***';
$informacoesDaPlacaEmJSON = shell_exec('python placa.py ' . $placa);
$informacoesDaPlaca = json_decode($informacoesDaPlacaEmJSON);
?>
Se a gente imprimir o objeto gerado com a função print_r
do PHP:
print_r($informacoesDaPlaca);
Nós obtemos:
stdClass Object
(
[city] => GUARAMIRIM
[model_year] => 201*
[plate] => M**4***
[color] => VERMELHA
[status_code] => 0
[brand] => FIAT/SIENA EL FLEX
[return_code] => 0
[date] => 23/02/2016 19:59:59
[state] => SC
[chassis] => ************57158
[year] => 201*
[return_message] => Sem erros.
[model] => FIAT/SIENA EL FLEX
[status_message] => Sem restrição
)
Alguns dados foram omitidos.
Isso permite que você também possa acessar os dados assim:
print($informacoesDaPlaca->city);
print($informacoesDaPlaca->state);
O que retornaria:
GUARAMIRIM
SC