我正在使用Alchemy API来过滤掉一些数据。在本机代码中一切正常。但是当我在我的Laravel控制器中使用它时,它会抛出无法重新声明的类。 My controller,alchemyapi.php and example.php
位于同一目录中。以下是我在本机代码中包含alchemyapi.php
的方法
<?php
require_once 'alchemyapi.php';
$alchemyapi = new AlchemyAPI("MY API KEY"); ?>
但是当我将它包含在控制器中时,它会抛出我的错误。有什么我想念的吗?
require_once 'alchemyapi.php';
$alchemyapi = new AlchemyAPI("MY API KEY");
本机代码(example.php
)运行良好,没有任何问题。但是在laravel控制器中它会抛出错误Cannot redeclare class AlchemyAPI
in alchemyapi.php line 20
答案 0 :(得分:2)
而不是在require_once
中使用namespace
使用alchemyapi.php
,然后在use
namespace
用于同一MyController
<强> alchemyapi.php 强>
<?php
namespace App\Http\Controller;
class AlchemyApi {
//your code
}
<强> MyController.php 强>
<?php
namespace App\Http\Controller;
use App\Http\Controller\AlchemyApi;
class MyController {
$alchemy = new AlchemyApi("Your_api_key");
}
答案 1 :(得分:0)
好的,我认为发生的事情是alchemyapi.php
已经被作曲家自动加载器包含在内。
试试这个。
lib
。在composer.json
的“自动加载”部分下添加以下代码。确保JSON有效:
"files": [
"lib/alchemyapi.php",
],
运行composer dump-autoload
。如果错误,您的composer.json
无效或者您没有将文件放在正确的位置。
从控制器中删除 require_once 'alchemyapi.php';
。
在处理作曲家时,这就是你如何处理全局命名空间中的类。在运行composer之后,它会在app
中扫描这些目录以获取PSR-4类。
我无法确定,但我认为作曲家正在寻找它,而且你也是手动要求它。这可以解释为什么PHP认为你正在重新声明该类。