找不到类,作曲家和Zend Framework 1自动加载器问题



我在[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致命错误:未被发现的错误:class'class depentencyIndoction'在/var/www/html/application/bootstrap.php:29

[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 classesDependencyInjection(services.yaml');
$proxy       = $diContainer->get('containerProxy');

这是[root]/library/classes/DependencyInjection.php的定义:

use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentConfigFileLocator;
use SymfonyComponentDependencyInjectionLoaderYamlFileLoader;
USE SymfonyComponentDependencyInjectionContainer;
class DependencyInjection extends ContainerBuilder
{
    ....
}

这里怎么了?为什么自动加载器找不到该类?

您正在尝试加载一个"类"名称空间,但是您的类并未定义为在"类"名称空间中。

new classesDependencyInjection(...)在PSR-0中加载{paths}classesDependencyInjection.php,并尝试从名称空间classes实例化类DependencyInjection,但是DependencyInjection不在classes名称空间中。该文件将加载,但不存在。

您可以将namespace classes;添加到这些类中的每个类中,但这并不是一个好的解决方案。更好的解决方案是使用合适的命名区域或更改PSR-0列表以包括库/类并使用new DependencyInjection(...)。(我对第一个投票 - 使用专有名称空间。)

根据要求。示例:

文件位置
{app}libraryUsefullNamespaceDependencyInjection.php

使用 new UsefullNamespaceDependencyInjection.php

depentencyIndoction.php:

namespace UsefullNamespace;  
use [...];  
class DependencyInjection extends ContainerBuilder
{

相关内容

  • 没有找到相关文章

最新更新