在laravel应用程序中使用composer包(pagseguro.php)时出现问题,显然它没有加载或初始化自己


Issue when using a package (pagseguro/php) with composer in a laravel app, apparently it is not loading or initializing itself

我有一个laravel应用程序,我想使用pagseguro.php包。我将其添加到composer.json中并进行了更新。我可以毫无问题地访问主类(PagSeguroPaymentRequest)。

在某种程度上,我不得不称之为:

PagSeguroConfig::getAccountCredentials();

但它抛出了一个例外。在阅读了周围的代码后,我想尝试自己初始化库,突然一切都正常了:

PagSeguroLibrary::init();

此方法位于source/PagSeguroLibrary/中唯一的php文件中

composer不应该自动执行这个方法吗?什么是"装载"包裹?有没有办法只使用composer来修复这个问题?

谢谢大家。

composer不应该自动执行这个方法吗?

不,不应该。Composer是一个包和依赖项管理程序。它的工作是

  1. 将PHP文件放入供应商文件夹

  2. 如果使用这些PHP文件意味着您需要其他PHP文件,请将这些其他PHP文件放入您的供应商文件夹

  3. 设置东西,使包中的类文件正确地自动加载到PHP中(即不需要自己要求或包含东西)

Composer包独立于框架工作。有人可以通过计算机包分发laravel服务提供商,也有人可以分发对laravel一无所知的代码。每个composer包的工作方式取决于作者(始终阅读自述文件)

pagseguro/php的情况下,看起来应该实例化一个PagSeguroPaymentRequest对象,该对象在自动加载时将自动调用init。与包一起分发的示例也使此包看起来是早于composer的代码,并且仍然使用许多手动包含和要求。