调用 Composer 自动加载但未加载任何内容

Composer autoload is called but loaded nothing

项目结构

/Test
    composer.json
    composer.lock
    index.php
    nfe.xml
    vendor/
        autoload.php
        (more files)

PHP代码

我正在尝试在 github

上的图书馆自述文件中找到的片段
<?php

require_once 'vendor/autoload.php';

// var_dump( get_declared_classes() );
echo 'a';
$nfeProc = NFePHPSerialize::xmlToObject(file_get_contents('nfe.xml'));
echo 'b';

//Capturando CNPJ do emitente
$cnpjEmitente = $nfeProc->getNFe()->getInfNFe()->getEmit()->getCNPJ();

echo $cnpjEmitente;

结果

但我收到以下错误:

PHP Fatal error:  Class 'NFePHPSerialize' not found in /var/www/html/Test/index.php on line 7
PHP Stack trace:
PHP   1. {main}() /var/www/html/Test/index.php:0

最后,我取消了 var_dump( get_declared_classes() ); 的注释,只是想知道是否加载了图书馆 nfephp-serialize 中的某些内容(出于税收目的),但我什么也没找到。

初始化

为了初始化 Test 目录,我发出了以下命令:

$ composer require jansenfelipe/nfephp-serialize

如何解决?

缺少的是与 NFePHPSerialize class 关联的路径。是JansenFelipe\NFePHPSerialize.

您可能想要 use class NFePHPSerialize 及其命名空间,如下所示:

<?php

require 'vendor/autoload.php';

use JansenFelipe\NFePHPSerialize\NFePHPSerialize;

或简单地写:

$nfeProc = JansenFelipe\NFePHPSerialize\NFePHPSerialize::xmlToObject(file_get_contents('nfe.xml'));

我是如何找到命名空间的?

您可能要在 /vendor 目录中搜索 NFePHPSerialize class... 并找到 namespace 语句,即:

namespace JansenFelipe\NFePHPSerialize;

因此,class 可与 namespace\class 一起使用:

$var = new JansenFelipe\NFePHPSerialize\NFePHPSerialize(...);

但是您可以通过插入 use 语句来改善这一点:

<?php

use JansenFelipe\NFePHPSerialize\NFePHPSerialize;

// some code...

$var = new NFePHPSerialize(...);

希望对您有所帮助! :)