致命错误:未捕获的错误:未找到“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 install
或 composer update
来下载依赖项,那么您的 test.php
脚本将运行 Composer 自动加载器并使其可用于您的 use
语句。
【讨论】:
以上是关于致命错误:未捕获的错误:未找到“Omnipay\Omnipay”类的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 致命错误:未捕获的错误:找不到类'Auth'
致命错误:未捕获的错误:调用未定义的方法 stdClass::option();