2014-05-18 119 views
2

我使用PHP 5.5.12自動加載類「的Zend 裝載機 ClassMapAutoLoader」沒有加載

我的應用程序包含多個模塊寫的Zend Framework 2.3.1應用程序,並在每個模塊的Module.php我有

public function getAutoloaderConfig() 
{ 
    return array(
     'Zend\Loader\ClassMapAutoLoader' => array(
      __DIR__ . '/autoload_classmap.php' 
     ), 
     'Zend\Loader\StandardAutoloader' => array(
      'namespaces' => array(
       __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__, 
      ), 
     ), 
    ); 
} 

這是我看到的與ClassMapAutoLoader相關的唯一跡象。

當我嘗試運行應用程序我得到:

Fatal error: Uncaught exception 'Zend\Loader\Exception\InvalidArgumentException' with message 'Autoloader class "Zend\Loader\ClassMapAutoLoader" not loaded' in /mnt/storage/home/ufk/work-projects/global-logic/project/xpogames/vendor/zendframework/zendframework/library/Zend/Loader/AutoloaderFactory.php on line 85 

任何想法,爲什麼?

+0

如果您將類映射自動加載器部分註釋掉(只留下標準自動加載器),它會起作用嗎? –

+0

我看到了和你一樣的問題。當我嘗試運行Doctrine-Module CLI來更新我的數據庫模式時,出現這些錯誤。有趣的是,我沒有在我的本地機器上看到這些錯誤,但是我一旦將所有內容移動到臨時服務器上...... – spetz83

+0

發現此問題。在下面添加答案。 – spetz83

回答

0

Module.php自動加載與ZF2自動加載無關。

你如何安裝ZF2?我認爲你自己安裝它,而不是使用作曲家?

在ZendSkeletonApp是一些例子,如何自動加載ZF2本身: https://github.com/zendframework/ZendSkeletonApplication/blob/master/init_autoloader.php

包括此部分在公開/ index.php文件 https://github.com/zendframework/ZendSkeletonApplication/blob/master/public/index.php#L14

+0

我使用作曲家安裝了ZF2。我檢查了,我的init_autoloader.php和index.php與git中的一樣。 – ufk

+0

如果你使用composer安裝它,那麼應該是文件供應商/ autoload.php,如果它包含所有應該工作。 https://github.com/zendframework/ZendSkeletonApplication/blob/master/init_autoloader.php#L19-L22 – ThaDafinser

+0

當我從getAutoloaderConfig中刪除Zend \ Loader \ ClassMapAutoLoader時,問題就消失了。 – ufk

4

我有同樣的問題,因爲你,我想通了是什麼原因導致的問題:

'Zend\Loader\ClassMapAutoLoader' => array(
     __DIR__ . '/autoload_classmap.php' 
    ), 

需要是:

'Zend\Loader\ClassMapAutoloader' => array(
     __DIR__ . '/autoload_classmap.php' 
    ), 

自動裝載機中的小L。當我們不應該擁有時,我們都是駱駝式的。這爲我清除了它。請讓我知道這對你有沒有用。