Erro utilizando class *** Resolvido

(George Carvalho) #1

Amigos,

Inclui a class abaixo em Bibliotecas, adicionei a biblioteca a aplicação e chamo com sc_include(“Correios_frete.php”);

Ao executar a aplicação recebo o erro: Parse error: syntax error, unexpected ‘;’, expecting T_FUNCTION in C:\Program Files (x86)\NetMake\v5\wwwroot\scriptcase\app\ACF\blank_1\Correios_frete.php on line 86

A ultima linha da classe é 85, não estou conseguindo identificar o erro.

Algum dos amigos tem alguma dica?

Grato

<?php /** * Classe que retorna os fretes do webservice dos correios * @Author Luan Garcia **/ Class Correios_frete extends Object{ const PAC = 41106; const SEDEX = 40010; const SEDEX10 = 40215; private $url = 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?'; private $origem = '05428020'; public $tipos = array('PAC'=> 41106,'SEDEX'=> 40010,'SEDEX10'=> 40215); private $campos = array( "nCdEmpresa" => NULL,//codigo da empresa se tiver afiliacao com os correios "sDsSenha" => NULL,//senha da afiliacao, "nCdServico" => NULL,//servico sedex,sedex10,pac "sCepOrigem" => NULL,//origem do frete "sCepDestin" => NULL,//destino do pedido "nVlPeso" => NULL,//peso do pedido 0.3 para 300 gramas max 30kg "nCdFormato" => "1", //formato do pacote, caixa,envelope etc, "nVlComprimento" => "26", //comprimento do pacote, "nVlAltura" => "16", //altura do pacote, "nVlLargura" => "9", //largura do pacote, "nVlDiametro" => "0", //diametro do pacote, "sCdMaoPropria" => "N",//entregar somente em mao propria "nVlValorDeclarado" => 0,//declarar valor do pedido "sCdAvisoRecebimento" => "N", //aviso de recebimento, "StrRetorno" => "XML" ); /** * Seta os valores da origem do frete e url (opicional) * @param String $origem cep de origem * @url String url dos correios em caso de atualizacao (opcional) */ function __construct($origem, $url = false){ $this->origem = $origem; if($url){ $this->url = $url; } } /** * Retorna o valor e o prazo dos serviços dos correios (PAC,SEDEX e SEDEX10) * @param String $cep cep do destino * @param Int $peso peso da compra * @param Int $servico tipo de entrega (PAC,SEDEX e SEDEX10) se não passar valor retornar todos os meios de entrega; * @return Array **/ public function consultarFrete($cep, $peso, $servico = false){ $cep = preg_replace("/[^0-9]+/","", $cep); $this->campos['nVlPeso'] = $peso; $this->campos['sCepDestino'] = $cep; $this->campos['sCepOrigem'] = $this->origem; if(!$servico){ foreach($this->tipos as $valor){ $this->campos['nCdServico'] = $valor; $args = http_build_query($this->campos); $retorno[] = Set::reverse(new Xml(file_get_contents($this->url . $args))); } }else{ if(is_numeric($servico)){ $this->campos['nCdServico'] = $servico; }else{ $this->campos['nCdServico'] = $this->tipos[strtoupper($servico)]; } $args = http_build_query($this->campos); $retorno = Set::reverse(new Xml(file_get_contents($this->url . $args))); } //se houver erro retorna o metodo retorna false if($frete['cServico'][0]['Erro']!="0"){ $retorno = false; } return $retorno; } ?>
(George Carvalho) #2

Alterei o sc_include paras c_include(“Correios_frete.php”, “prj”);

Agora apresenta o erro: Fatal error: Class declarations may not be nested in C:\Program Files (x86)\NetMake\v5\wwwroot\scriptcase\app\ACF\blank_1\blank_1.php on line 786

Linhas na aplicação gerada:

784|
785| Class Correios_frete extends Object{
786| const PAC = ‘41106’;
787| const SEDEX = ‘40010’;

(George Carvalho) #3

Criei o script em php, sem ser class.

(Agostinho) #4

George, boa tarde, estou passando por um problema parecido, no meu caso é com o FPDF, quero aproveitar os relatorios que ja tenho pronto em php para jogar dento do SC, mas em todos eles eu seto HEADER e FOOTER e não estou conseguindo isto no SC ja tentei o SC_INCLUDE mas foi sem sucesso, dai lhe peço, tem como me explicar como você fez no seu caso, para eu ver se da certo aqui tambem com o FPDF?

(George Carvalho) #5

Criei o script em php dentro do evento pretendio, sem ser class.

(Cleyton Euler) #6

Agostinho, talvez uma consulta formato livre seja mais fácil. Dê uma olhada na documentação.

(Agostinho) #7

obrigado George e Cleyton,vou tentar ver a documentação e fazer o que preciso, valeu…