[英]Composer autoloader + slim framework - fatal error: Class 'Slim\Slim' not found?
[英]Class not found, composer and Zend Framework 1 autoloader issue
我在[root]/composer.json
文件中具有以下類自動加載定義:
{
...
"autoload": {
"psr-0": {
"": [
"application/models",
"application/controllers",
"application/forms",
"library/"
]
},
"psr-4": {
"": ["src/"]
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
...
}
當我調用[root]/public_html/index.php
頁面時,出現以下錯誤:
PHP致命錯誤:未捕獲錯誤:在/var/www/html/application/bootstrap.php:29中找不到類'classes \\ DependencyInjection'
[root]/public_html/index.php
中的代碼如下:
$bootstrap = true;
require_once '../application/bootstrap.php';
[root]/application/bootstrap.php
文件中的內容是:
// turn on autoloading for classes
// composer autoloader
include(MMIPATH.'/vendor/autoload.php');
// zend autoload
require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();
$diContainer = new classes\DependencyInjection(services.yaml');
$proxy = $diContainer->get('containerProxy');
這是[root]/library/classes/DependencyInjection.php
的定義:
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
USE Symfony\Component\DependencyInjection\Container;
class DependencyInjection extends ContainerBuilder
{
....
}
怎么了 為什么自動加載器找不到該類?
您正在嘗試加載“類”名稱空間,但是您的類未定義為在“類”名稱空間中。
PSR-0中的new classes\\DependencyInjection(...)
加載{paths}\\classes\\DependencyInjection.php
並嘗試從命名空間classes
實例化DependencyInjection
classes
,但是DependencyInjection
不在classes
命名空間中。 該文件將被加載,但該類不存在。
您可以添加namespace classes;
對於每個類,但這並不是一個很好的解決方案。 更好的解決方案是使用適當的命名空間或更改您的PSR-0列表以包括庫/類並使用new DependencyInjection(...)
。 (我的投票是第一票-使用正確的名稱空間。)
按照要求。 例:
文件位置
{app}\\library\\UsefullNamespace\\DependencyInjection.php
使用new UsefullNamespace\\DependencyInjection.php
調用它
DependencyInjection.php:
namespace UsefullNamespace;
use [...];
class DependencyInjection extends ContainerBuilder
{
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.