簡體   English   中英

找不到類,作曲家和Zend Framework 1自動加載器問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM