0

我正在使用 Zend 标准自动加载器。它正在注册一个命名空间,但不会注册另一个。这是我的代码:

$zflib = $_SERVER['SERVER_ROOT'].'/classes/Zend_Framework_2/2.3.2/library';
require_once($zflib.'/Zend/Loader/StandardAutoloader.php');
$loader = new Zend\Loader\StandardAutoloader(array('autoregister_zf' => true));
// Library
$loader->registerNamespace('VProd',$_SERVER['SERVER_ROOT'].'/classes/VProd');
// Dealer Library
$loader->registerNamespace('Dealers', $_SERVER['SERVER_ROOT'].'/dealers/classes');
$loader->setFallbackAutoloader(true);
$loader->register();

然后我在 Dealers/classes 目录中有这样的基本设置:

模型.php

<?php

namespace Dealers\Models;

class Model {
    /**
     * The table this model uses
     *
     * @var string
     */
    protected $table;
}

合作模式:

<?php

namespace Dealers\Models\Coop;

use Dealers\Models\Model;

class Coop extends Model {
    /**
     * The table this model uses
     *
     * @var string
     */
    protected $table = 'coop';

    public static function testing()
    {
        return 'testing';
    }
}

在我的应用程序中,我先包含该配置文件。

coop.php

<?php
require_once($_SERVER['SERVER_ROOT'].'/security/config.php');

use Dealers\Model\Coop;
echo CoopBalance::testing();

我收到此错误消息:

致命错误:在第 7 行的 \www\dealers\classes\coop\Coop.php 中找不到类 'Dealers\Models\Model'

这是我的合作模式中这条线的位置:

class Coop extends Model

谢谢你的帮助!

4

1 回答 1

0

ZF2 标准自动加载器是符合 PSR-0 标准的自动加载器。因此,您的类应该位于dealers/classes/Dealers/Models/Model.php并且dealers/classes/Dealers/Models/Coop/Coop.php(区分大小写)以正确自动加载(命名空间的每个“部分”都应该是一个文件夹)。

此外,如果可能的话,我建议使用 Composer 安装 ZF2(或您正在使用的任何组件)。那么您根本不需要自己配置自动加载器。

于 2015-09-18T19:54:32.463 回答