zend 无法识别已注册的命名空间
zend won't recognize registered namespace
我正在使用 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 目录中进行了这样的基本设置:
Model.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();
我收到此错误消息:
Fatal error: Class 'Dealers\Models\Model' not found in
\www\dealers\classes\coop\Coop.php on line 7
这条线在我的 Coop 模型中的位置:
class Coop extends Model
感谢您的帮助!
ZF2 标准自动装弹器是 PSR-0 compliant 自动装弹器。所以你的 类 应该在 dealers/classes/Dealers/Models/Model.php
和 dealers/classes/Dealers/Models/Coop/Coop.php
(区分大小写)才能正确自动加载(命名空间的每个 'part' 应该是一个文件夹)。
此外,如果可能的话,我建议使用 Composer 安装 ZF2(或您正在使用的任何组件)。那么你根本不需要自己配置自动加载器。
我正在使用 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 目录中进行了这样的基本设置:
Model.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();
我收到此错误消息:
Fatal error: Class 'Dealers\Models\Model' not found in \www\dealers\classes\coop\Coop.php on line 7
这条线在我的 Coop 模型中的位置:
class Coop extends Model
感谢您的帮助!
ZF2 标准自动装弹器是 PSR-0 compliant 自动装弹器。所以你的 类 应该在 dealers/classes/Dealers/Models/Model.php
和 dealers/classes/Dealers/Models/Coop/Coop.php
(区分大小写)才能正确自动加载(命名空间的每个 'part' 应该是一个文件夹)。
此外,如果可能的话,我建议使用 Composer 安装 ZF2(或您正在使用的任何组件)。那么你根本不需要自己配置自动加载器。