Precisa instalar o com poder para funcionar.
O composer foi instalado, mas o que acontece é que se utilizar o include do arquivo autoload.php numa aplicação Blank ele dá um erro por causa do namespace.
Trecho do código:
error_reporting(E_ALL);
ini_set('display_errors', 'On');
include "../../../../libs_composer/vendor/autoload.php";
use NFePHP\Extras\Danfe;
use NFePHP\Common\Files\FilesFolders;
O erro está acontecendo é esse : Parse error: syntax error, unexpected ‘use’ (T_USE) in /home/sisttema/public_html/scriptcase8/app/automacao/teste_composer/index.php on line 1045.
Quando fui pesquisar sobre o erro, verifiquei que o comando USE não pode ser usado dentro de um função.
Link da Resposta: http://pt.stackoverflow.com/questions/51014/erro-unexpected-use-t-use-ao-usar-autoload
Abri o arquivo pra verificar e vi que o código é incluído dentro de uma função chamada CONTROLE.
Se tivesse como fazer o include no topo desse arquivo, aí teria como fazer normalmente.
Já tentou colocar onfephp como uma biblioteca externa? Aí você não usa include direto usa a macro propria do SC e ele já faz o include no inicio da aplicação.
Acabei de fazer isso e o problema continua.
sc_include_library("sys", "nfephp_composer", "vendor/autoload.php", true, true);
use NFePHP\Extras\Danfe;
use NFePHP\Common\Files\FilesFolders;
O erro: Parse error: syntax error, unexpected ‘use’ (T_USE) in /home/sisttema/public_html/scriptcase8/app/automacao/teste_composer/index.php on line 1042.
Tire essas linhas
error_reporting(E_ALL);
ini_set(‘display_errors’, ‘On’);
Rodrigo, as linhas foram só no primeiro exemplo. No segundo eu usei de acordo com o código abaixo
sc_include_library("sys", "nfephp_composer", "vendor/autoload.php", true, true);
use NFePHP\Extras\Danfe;
use NFePHP\Common\Files\FilesFolders;
O grande problema é que o SC insere o código dentro de uma function chamada CONTROLE e não se pode usar o comando USE dentro de funções.
Veja esse link: http://pt.stackoverflow.com/questions/51014/erro-unexpected-use-t-use-ao-usar-autoload
De acordo com essa estrutura que vejo no código da página, não é possível utilizar NAMESPACES dentro do SC. E, se for isso mesmo, vai ser um problema.
Qual sua versão do PHP? Alguns scripts não funcionam com versão anterior a 5.4, tive um problema desse com uma autenticação do Facebook, não rodava em 5.4 apenas 5.4 >
Faz um outro teste, deixa esse autoload em um arquivo e no blank faz um include dele.
Rodrigo, a versão do meu PHP é a 5.6. O problema parece ser a estrutura que o SC gera os arquivos. Vc tem alguma aplicação que faz uso de NAMESPACE ?
Tenho sim,
http://casamentonline.com.br/novo-cadastro/
Cadastro com Facebook
Usei da maneira que coloquei acima
Todos os códigos ficam em páginas fora do scriptcase e apenas chamo eles com include.
Vou tentar usar dessa maneira e , se der certo, eu retorno o resultado.
O composer só serve pra atualizar as bibliotecas necessárias para esse projeto. Sendo assim utilize apenas para baixar toda a estrutura do projeto NfePhp.
Em seguida use o projeto e esqueça o composer. Pois o mesmo só servirá quando tiver outra atualização na biblioteca NfePhp.
Fred,
O problema não é o composer e sim o comando USE para utilizar NAMESPACE dentro de uma function no PHP. O que tem que ser feito é uma GAMBIARRA pra poder funcionar.
Que gambiarra?
Também estou tentando usar.
Valeu !
Tem que construir a aplicação num arquivo PHP fora do projeto e CHAMAR ele por fora.
Use desta forma:
Substitua
use NFePHP\NFe\ToolsNFe;
$nfe = new ToolsNFe(’…/…/config/config.json’);
Por
$nfe = new NFePHP\NFe\ToolsNFe(’…/…/config/config.json’);
em vez de usar o USE
Vou fazer um teste e dou o retorno se funcionar bem.
Boa tarde.
Estava com o mesmo problema e ao utilizar a sugestão do amigo Everaldo, resolveu.
@daves.vieira Eu estava com o mesmo problema quando tentava utilizar bibliotecas do Composer, mas consegui resolver de uma forma “Menos gambiarra”, como eu percebi que o problema é o use em uma classe eu configurei minha biblioteca externa uma index.php na raiz e nela eu fiz a chamada, assim quando eu chamo a biblioteca eu chamo a INDEX ao invés da AUTOLOAD.
Ex da index.php:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
?>
Como ficou no SC:
sc_include_library("sys", "PHP Spreadsheet", "index.php", true, true);
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');