PHP自动加载程序未正确加载类?
我有问题自动加载程序没有正确加载类。我不确定我是否做对了。。。我使用的是slim框架 我的PHP自动加载程序未正确加载类?,php,composer-php,autoloader,psr-4,Php,Composer Php,Autoloader,Psr 4,我有问题自动加载程序没有正确加载类。我不确定我是否做对了。。。我使用的是slim框架 我的composer.json如下所示: { "require": { "slim/slim": "^3.0", "robmorgan/phinx": "^0.6.6", "vlucas/phpdotenv": "^2.4", "philo/laravel-blade": "3.*" }, "autoload": {
composer.json
如下所示:
{
"require": {
"slim/slim": "^3.0",
"robmorgan/phinx": "^0.6.6",
"vlucas/phpdotenv": "^2.4",
"philo/laravel-blade": "3.*"
},
"autoload": {
"psr-4": {
"Cipo\\": ["app/"]
}
}
}
$app->get("/", Cipo\Controllers\HomeController::class . ":index");
$app->get("/auth/login", Cipo\Controllers\Console\AuthController::class . ":getLogin");
和我的目录结构:
app/
Controllers/
Console/
AuthController.php
UsersController.php
HomeController.php
Core/
AbstractController.php
router.php
database/
public/
index.php
vendor/
views/
storage/
composer.json
我的router.php
如下所示:
{
"require": {
"slim/slim": "^3.0",
"robmorgan/phinx": "^0.6.6",
"vlucas/phpdotenv": "^2.4",
"philo/laravel-blade": "3.*"
},
"autoload": {
"psr-4": {
"Cipo\\": ["app/"]
}
}
}
$app->get("/", Cipo\Controllers\HomeController::class . ":index");
$app->get("/auth/login", Cipo\Controllers\Console\AuthController::class . ":getLogin");
问题是/
工作并显示正确的HTML,但是/auth/login
不工作。下面是引发的错误:
[Tue Jan 31 14:11:37.758803 2017] [:error] [pid 1336] [client 44.44.44.1:54453] Slim Application Error:
Type: RuntimeException
Message: Callable Cipo\\Controllers\\Console\\AuthController does not exist
File: /var/www/cipo.me/vendor/slim/slim/Slim/CallableResolver.php
Line: 62
Trace: #0 /var/www/cipo.me/vendor/slim/slim/Slim/CallableResolverAwareTrait.php(45): Slim\\CallableResolver->resolve('Cipo\\\\Controller...')
#1 /var/www/cipo.me/vendor/slim/slim/Slim/Route.php(333): Slim\\Routable->resolveCallable('Cipo\\\\Controller...')
#2 /var/www/cipo.me/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(116): Slim\\Route->__invoke(Object(Slim\\Http\\Request), Object(Slim\\Http\\Response))
#3 /var/www/cipo.me/vendor/slim/slim/Slim/Route.php(316): Slim\\Route->callMiddlewareStack(Object(Slim\\Http\\Request), Object(Slim\\Http\\Response))
#4 /var/www/cipo.me/vendor/slim/slim/Slim/App.php(438): Slim\\Route->run(Object(Slim\\Http\\Request), Object(Slim\\Http\\Response))
#5 /var/www/cipo.me/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(116): Slim\\App->__invoke(Object(Slim\\Http\\Request), Object(Slim\\Http\\Response))
#6 /var/www/cipo.me/vendor/slim/slim/Slim/App.php(332): Slim\\App->callMiddlewareStack(Object(Slim\\Http\\Request), Object(Slim\\Http\\Response))
#7 /var/www/cipo.me/vendor/slim/slim/Slim/App.php(293): Slim\\App->process(Object(Slim\\Http\\Request), Object(Slim\\Http\\Response))
#8 /var/www/cipo.me/public/index.php(45): Slim\\App->run()
#9 {main}
View in rendered output by enabling the "displayErrorDetails" setting.
和AuthController.php
代码段:
<?php
namespace Cipo\Controllers\Console;
use PDO;
use Cipo\Core\AbstractController;
use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Interop\Container\ContainerInterface;
/**
* Class AuthController
* @property \PDO db
* @property \Philo\Blade\Blade blade
*/
class AuthController extends AbstractController
{
// ...
public function getLogin(RequestInterface $request, ResponseInterface $response)
{
$response->getBody()->write($this->blade->view()->make("auth.login")->render());
return $response;
}
}
我看不到任何明显的问题。如果/
的路径有效,则自动加载器“应该”有效。你有没有检查过你的文件名或文件夹名没有任何严重的打字错误?在某个时候,类似的事情也发生在我身上。在这种情况下,在任何地方复制/粘贴控制器的名称都会有所帮助。我尝试了/users
路由$app->get(“/users”,Cipo\Controllers\Console\userscocontroller::class.”:index“)
有效,看起来有一些输入错误:(我已经弄明白了。问题是我的AuthController
类在名为AuthControllers.php
的文件中,而不是AuthController.php
的文件中!你不是第一个因为类似错误而失去理智的人。:)