StandardAutoload不起作用,而ClassAutoload则不行

时间:2014-11-30 17:35:14

标签: php zend-framework2 zend-autoloader

我在测试项目(尝试学习ZF2)时收到php致命错误“Class not found”。

    return array(
        'Zend\Loader\ClassMapAutoloader' => array(
            __DIR__ . '/classmap.php',
        ),
        'Zend\Loader\StandardAutoloader' => array(
            'namespaces' => array(
                __NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
            ),
        ),
    );

问题很简单,如果我不包括我的类图,我的entites dosnt会自动加载,这是“好的”(就像现在一样),但我真的想知道问题在哪里以及出了什么问题。

我的classmap.php文件如下所示:

<?php
// Generated by Zend Framework 2
return array(
        'Common\Entity\Property' => __DIR__ . '/src/Common/Entity/property.php',
        'Common\Entity\Domain'   => __DIR__ . '/src/Common/Entity/domain.php',
        'Common\Module'          => __DIR__ . '/Module.php',
);

我的错误日志如下所示:

[Sun Nov 30 17:16:40 2014] [error] [client 172.30.30.6] PHP Fatal error: 
    Class 'Common\\Entity\\Domain' not found in
     /var/www/hosts.legetimen.no/module/Frontpage/src/Frontpage/Controller/IndexController.php
     on line 38

(我用模具测试我的Modeule.php(“测试”);确保它已加载等)

[编辑] 我模块的目录结构Common:

$ tree Common
Common
├── classmap.php
├── config
│   └── module.config.php
├── Module.php
└── src
    └── Common
        ├── Controller
        └── Entity
            ├── domain.php
            └── property.php

谢谢!

1 个答案:

答案 0 :(得分:1)

在您的错误消息中,您有Class 'Common\\Entity\\Domain' not found in...,因此标准自动加载器正在查找Domain.php文件,而不是domain.php,因此只需更改为大写的文件名第一个字母。

ClassMapAutoloader没有此问题,因为例如Common\Entity\Property正确映射到/src/Common/Entity/property.php