2013-07-12 53 views
0

以前,我使用的是zend 1.x.我能夠使用下面的代碼自動加載zend類。如何在自動加載器上加載Zend 2類

// autoload class from Zend Lib 
require_once ABSPATH.'/classes/Zend/Loader/Autoloader.php'; 
$loader = Zend_Loader_Autoloader::getInstance();  
try{ 
// database connection  
$dbo = Zend_Db::factory('pdo_mysql', array( 
     'host'  => DB_HOST, 
     'username' => DB_USER, 
     'password' => DB_PW, 
     'dbname' => DB_PREFIX.DB_NAME 
    )); 
$dbo->getConnection(); 
// save database adapter for easy usage in other classes 
Zend_Db_Table::setDefaultAdapter($dbo); 
Zend_Registry::set('db', $dbo); 

}catch(Zend_Db_Adapter_Exception $e){ 
print $e; 
//header("Location: http://www.google.com/error/"); 
} 

我升級到zend 2,因爲類可能會更好。我可以知道我如何自動加載它們?

+0

嗨!我不使用zend框架,但是,我使用他們的類作爲我的自定義框架中的獨立.. – Slay

回答

2

如果你只是使用ZF2作爲一個獨立的庫,而無需採用完整的MVC框架,然後自動加載相當簡單:

  1. 確保Zend目錄是在你的PHP include_path
  2. 按使用spl_autoload_register

以下自動加載磁帶機基本上是什麼Zend\Loader\StandardAutoloader::loadClass()作爲後備autloader運轉時的作用:

spl_autoload_register(function($class) { 
    $f = stream_resolve_include_path(str_replace('\\', '/', $class) . '.php'); 
    if ($f !== false) { 
     return include $f; 
    } 
    return false; 
}); 

這將使用PSR-1 autloading機制,所有類,而不只是Zend類。

或者,您也可以只做到以下幾點:

require_once 'Zend/Loader/StandardAutoloader.php'; 
$autoloader = new Zend\Loader\StandardAutoloader(array(
    'fallback_autoloader' => true, 
)); 
$autoloader->register(); 

如上所述,這將適用於PSR-1自動加載所有類。如果你只想爲Zend類使用這種機制,那麼通過'fallback_autoloader' => false

+0

嗨,我添加上面的代碼中,新的Zend \ Loader \ StandardAutoloader給我一個語法錯誤。 – Slay

+1

更正'require_once'調用。有一個斜線而不是一個點。 –

+1

另一個想法:ZF2至少需要PHP 5.3。你可以通過運行'php --version'來確認嗎? –

0

我建議你學習的骨架應用程序通過ZF2, 提供我不是太瞭解關於ZF1但據我所知ZF2都有自己的自動加載的機制, 就自動加載關注,當你按照骷髏應用程序,你會注意到有一個Config \ application.config.php這是我們加載所有模塊等文件。作爲示例我將加載我的文件下面。就設置連接等而言,你會發現它們在同一目錄樹下,即「Config \ local或Config \ Global」。

<?php 
return array(
// This should be an array of module namespaces used in the application. 
'modules' => array(
    'ZendDeveloperTools', 
    'DoctrineModule', 
    'DoctrineORMModule', 
    'Application', 
    'Administration', 
    'Account', 
    'Manufacturing', 
    'GridMain', 
), 

// These are various options for the listeners attached to the ModuleManager 
'module_listener_options' => array(
    'module_paths' => array(
     './module', 
     './vendor', 
    ), 
    'config_glob_paths' => array(
     'config/autoload/{,*.}{global,local}.php', 
    ), 
), 


); 
1

您也可以通過Composer加載單個組件,然後您只需在執行腳本開始時包含require 'vendor/autoload.php';