2013-07-12 4 views
0

이전에는 zend 1.x를 사용하고 있습니다. 아래 코드를 사용하여 클래스를 자동로드 할 수 있습니다.오토로더에서 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

안녕하세요! 나는 젠드 프레임 워크를 사용하지 않지만, 내 사용자 정의 프레임 워크에서 독립형 클래스를 사용하고 있습니다. – Slay

답변

2

후 자동 로딩은 매우 간단합니다 :

  1. Zend 디렉토리가 PHP를 include_path에 있는지 확인합니다.
  2. 를 눌러 다음을 spl_autoload_register

를 사용하여 자동 로더는 본질적으로 어떤 대체 autloader 역할을 할 때 Zend\Loader\StandardAutoloader::loadClass()을 수행합니다이 아니라, 모든 클래스에 대한 PSR-1 autloading 메커니즘을 사용

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

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

내가 ZF1에 대해 잘 인식하지 오전하지만 내가 아는 한 ZF2 자동 로딩 자체기구는 ZF2, 에서 제공하는 골격 응용 프로그램을 연구를 제안, 는 지금까지 자동 로딩 중 관심을 때를 스켈레톤 응용 프로그램을 따라 가면 Config \ application.config.php입니다. 이것은 모든 모듈 등을로드하는 파일입니다. 예제로 아래에 파일을로드합니다. 연결 설정 등과 관련하여 동일한 디렉토리 트리 (예 : "Config \ local 또는 Config \ Global")를 찾을 수 있습니다. 당신은 단지 전체 MVC 프레임 워크를 사용하지 않고 독립 라이브러리로 ZF2를 사용하는 경우

<?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';을 포함하면됩니다.