致命错误:未捕获的错误:未找到“Omnipay\Omnipay”类

Posted

技术标签:

【中文标题】致命错误:未捕获的错误:未找到“Omnipay\\Omnipay”类【英文标题】:Fatal error: Uncaught Error: Class 'Omnipay\Omnipay' not found致命错误:未捕获的错误:未找到“Omnipay\Omnipay”类 【发布时间】:2018-01-01 11:37:24 【问题描述】:

我在搞乱 Omnipay,收到了这条消息:

致命错误:未捕获的错误:未找到“Omnipay\Omnipay”类

目录列表:

composer.json composer.lock test.php 供应商

test.php

<?php
use Omnipay\Omnipay;

$gateway = Omnipay::create('Stripe');
$gateway->setApiKey('abc123');

$formData = array('number' => '4242424242424242', 'expiryMonth' => '6', 'expiryYear' => '2016', 'cvv' => '123');
$response = $gateway->purchase(array('amount' => '10.00', 'currency' => 'USD', 'card' => $formData))->send();

if ($response->isRedirect())

 // redirect to offsite payment gateway
 $response->redirect();

elseif ($response->isSuccessful())

 // payment was successful: update database
 print_r($response);

else

 // payment failed: display message to customer
 echo $response->getMessage();

?>

我不以这种方式编写 PHP 代码,并且此时网站的说明含糊不清。这看起来是一种节省时间的好方法,但是......我不这样编码。我错过了什么?

【问题讨论】:

这有很多可能的原因。你运行作曲家更新了吗?您的供应商/自动加载是否在您的 PHP 类中正常加载。您是否正在使用某种为您自动加载的框架,如果是,是哪一个? @delatbabel 为我运行 Omnipay 的全部目的是简化事情,然后我收到一封电子邮件回复,告诉我“只使用 Composer”,就好像我自己无法确定支付处理器一样。那是一种依赖,依赖是弱点,是不必要的资源浪费。 Omnipay 可能很棒,但它只会造成另一个复杂的混乱。我将从代码中学习,但只要它转储更多依赖项,我就不会实现它。 Composer 是当今几乎所有 PHP 应用程序的依赖项。 @delatbabel 很公平,这就是我从头开始编写所有代码的原因,这反过来也是我的软件在完全相同的硬件上快 10 倍的原因。 【参考方案1】:

如果您使用 Composer,则需要确保包含 Composer auto-loader - 如果没有它,您的 test.php 脚本将不知道 Composer 正在做什么。

根据他们的文档,将其放在文件顶部:

require __DIR__ . '/vendor/autoload.php';

假设您已运行 composer installcomposer update 来下载依赖项,那么您的 test.php 脚本将运行 Composer 自动加载器并使其可用于您的 use 语句。

【讨论】:

以上是关于致命错误:未捕获的错误:未找到“Omnipay\Omnipay”类的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 致命错误:未捕获的错误:找不到类'Auth'

致命错误:未捕获的错误:找不到类“App\Config”

致命错误:未捕获的错误:调用未定义的方法 stdClass::option();

致命错误:未捕获的异常 PAYPAL

致命错误:未捕获错误:调用未定义函数 is_product()

突然出现Apache错误?致命错误:未捕获错误