Hi board!
I am trying to locate a custom library out of `ThirdParty/` using the classmap instead of PSR-4.
I have been successful using the PSR-4 namespace autoloader, but as this is my auth library and will be run frequently, I want to realize the performance of the classmap feature.
Oauth class (/app/ThirdParty/Googleapi/Oauth.php):
Code:
<?php namespace ThirdParty\Googleapi;
class Oauth
{
public function __construct()
{
}
public function dance(){
return "dance dance baby!";
}
}
?>
Autoload.php:
Code:
$psr4 = [
'Config' => APPPATH . 'Config',
APP_NAMESPACE => APPPATH, // For custom namespace
'App' => APPPATH, // To ensure filters, etc still found,
//'ThirdParty' => APPPATH . 'ThirdParty' // temporarily disable PSR to test classmap locating
];
$classmap = [
'Oauth' => APPPATH . 'ThirdParty/Googleapi/Oauth.php'
];
BaseController.php
Code:
namespace App\Controllers;
use CodeIgniter\Controller;
//use ThirdParty\Googleapi\Oauth; // temporarily disable PSR to test classmap locating
class BaseController extends Controller
{
protected $helpers = [];
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
// Do Not Edit This Line
parent::initController($request, $response, $logger);
$this->googleapi = new Oauth();
}
}
As this is written, I get `Error: Class 'App\Controllers\Oauth' not found` in BaseController when trying to instantiate the Oauth class. This tells me CI did not check the classmap and instead just looked for `Oauth` in the controller PSR namespace that was loaded.
Have I done something wrong or is this a bug?
Thanks!
Evan