2015-09-18 181 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(); 

我再有這樣的基本設置在經銷商/ 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

這也正是這條線是在我的小屋型號:

class Coop extends Model 

感謝您的任何幫幫我!

+0

什麼是類文件的路徑(不只是文件名)? –

+0

型號:dealer/classes/Model.php Coop型號:dealer/classes/coop/Coop.php(將會有其他人與coop相關) – HaleyBuggs

回答

0

ZF2標準自動裝載機是PSR-0 compliant自動裝載機。所以你的類應該在dealers/classes/Dealers/Models/Model.phpdealers/classes/Dealers/Models/Coop/Coop.php(區分大小寫)以正確自動加載(命名空間的每個「部分」應該是一個文件夾)。

此外,如果可能的話,我建議使用Composer來安裝ZF2(或您使用的任何組件)。那麼你根本不需要自己配置自動加載器。

+0

該系統已經實施,所以我不能做很多編輯工作,因爲很多他們的內部網站非常依賴它。但是,謝謝你的解釋! – HaleyBuggs

相關問題