gpt4 book ai didi

php - 使用命名空间时无法使用 require_once 加载类

转载 作者:行者123 更新时间:2023-12-04 16:55:40 24 4
gpt4 key购买 nike

我正在使用 Slim用于开发一个简单的 REST API ,我正面临一个奇怪的问题。基本上我配置了 API通过 composer 使用自动加载器加载所有类:

"autoload": {
"psr-4": {
"App\\Controllers\\": "app/controllers",
"App\\Helpers\\": "app/helpers",
"App\\Models\\": "app/models",
"App\\Services\\": "app/services",
"Core\\": "src/core",
"Core\\Helpers\\": "src/helpers",
"Core\\Libraries\\": "src/libraries"
}
}

我创建了一个名为 GoogleSync 的类其中必须包括 Google API php library ,所以我已经包括在以下方式:
<?php namespace Core\Libraries;

defined('BASEPATH') or exit('No direct script access allowed');

require_once __DIR__ . '/external/google-api-php-client/Google_Client.php';
require_once __DIR__ . '/external/google-api-php-client/contrib/Google_CalendarService.php';


class GoogleSync
{
/**
* Google API Client
*
* @var Google_Client
*/
protected $client;

public function __construct($api_settings)
{
var_dump(file_exists(__DIR__ . "/external/google-api-php-client/Google_Client.php"));
$this->client = new Google_Client();
}
}

我收到以下错误:

Fatal error: Uncaught Error: Class 'Core\Libraries\Google_Client' not found in A:\Programmi\MAMP\htdocs\ci3-api\src\libraries\GoogleSync.php:44



如果我包含在类(class)中,出于奇怪的原因 Google_Client以下命名空间:
Core\Libraries

代码能够加载类。所以我怀疑 require_once无法注入(inject)该类,因为有一个自动加载器逻辑,但我可能是错的。

另外,方法 file_exist在构造函数中返回 true .

发生了什么?

最佳答案

您在命名空间内调用它,因此它尝试使用该命名空间,也许尝试像这样实例化它:$this->client = new \Google_Client();忽略命名空间。

Possible duplicate of this question.

关于php - 使用命名空间时无法使用 require_once 加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57322376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com