2015-09-18 5 views
0

Я использую стандартный автозагрузчик Zend. Он регистрирует одно пространство имен, но не регистрирует другое. Это мой код: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(); 

Я тогда основные установки, как это в каталоге дилеров/классов:

Model.php

<?php 

namespace Dealers\Models; 

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

Coop Модель:

<?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 

Спасибо за любой Помогите!

+0

Каков путь (а не только имя файла) к вашим файлам классов? –

+0

Модель: дилеры/классы/Model.php Coop Модель: дилеры/классы/coop/Coop.php (есть другие, связанные с coop) – HaleyBuggs

ответ

0

Автозагрузчик ZF2 является автозагрузчиком PSR-0 compliant. Таким образом, ваши классы должны быть в dealers/classes/Dealers/Models/Model.php и dealers/classes/Dealers/Models/Coop/Coop.php (с учетом регистра), чтобы получить автозагрузку должным образом (каждая «часть» пространства имен должна быть папкой).

Кроме того, если это вообще возможно, я рекомендую использовать Composer для установки ZF2 (или любых компонентов, которые вы используете). Тогда вам не нужно будет самостоятельно настраивать автозагрузчик.

+0

Эта система уже реализована, поэтому я не могу много редактировать, так как многие их внутренние веб-сайты в значительной степени зависят от него. Но спасибо за это объяснение! – HaleyBuggs

 Смежные вопросы

  • Нет связанных вопросов^_^