Я использую Slim
для разработки простого REST API
и столкнулся со странной проблемой. По сути, я настроил API
для загрузки всех классов с помощью автозагрузчика через композитор:
"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();
}
}
Я получаю следующую ошибку:
Неустранимая ошибка: необработанная ошибка: класс Core\Libraries\Google_Client не найден в A:\Programmi\MAMP\htdocs\ci3-api\src\libraries\GoogleSync.php:44
по странной причине, если я включу в класс Google_Client
следующее пространство имен:
Core\Libraries
код может загрузить класс. Поэтому я подозреваю, что require_once
не может внедрить класс, потому что есть логика автозагрузчика, но я могу ошибаться.
Кроме того, метод file_exist
в конструкторе возвращает true
.
Что творится?