2017-11-16 20 views
0

사용 가능한 코드를 요청하는 것이 적절하지 않다고 생각 하긴하지만, 솔루션을 찾지 못해서이 경우를 수행합니다.PHP__autoload와 Mollie_API_Autoloader 클래스를 결합하십시오.

Mollie_API_Autoloader 클래스와 함께 네이티브 PHP의 __autoload 기능을 사용하려고 :

class Mollie_API_Autoloader 
{ 
/** 
* @param string $class_name 
*/ 
public static function autoload ($class_name) 
{ 
    if (strpos($class_name, "Mollie_") === 0) 
    { 
     $file_name = str_replace("_", "/", $class_name); 
     $file_name = realpath(dirname(__FILE__) . 
"/../../{$file_name}.php"); 

     if ($file_name !== false) 
     { 
      require $file_name; 
     } 
    } 
} 

/** 
* @return bool 
*/ 
public static function register() 
{ 
    return spl_autoload_register(array(__CLASS__, "autoload")); 
} 

/** 
* @return bool 
*/ 
public static function unregister() 
{ 
    return spl_autoload_unregister(array(__CLASS__, "autoload")); 
} 
} 

Mollie_API_Autoloader::register(); 

몰리 자동 로더 클래스는 기본 PHP의 __autoload 클래스의 적절한 기능에 영향을 미친다. 이들을 결합 할 수없는 것 같습니다. 내가 어떻게 한거야?

답변

0

__autoload()은 더 이상 사용되지 않으며, 수년 전 (PHP 5.1.2) spl_autoloader_register()으로 바뀌 었습니다.

함께 사용할 수 없습니다. __autoload()은 제한적이며 모두 수행하면 spl_autoloader_register()이 더 좋습니다. 당신이 게시 클래스가 이미 spl_autoload_register()을 사용하기 때문에

은, 당신이 할 일은 당신의 부트 스트랩 코드 어딘가에

Mollie_API_Autoloader::register() 

를 호출하는 것입니다.

기존 코드가 __autoload() 인 경우 쉽게 spl_autoload_register()을 사용하도록 변경할 수 있습니다. __autoload 함수의 이름을 다른 것으로 변경하고 (old_autoloader라고 가정) spl_autoload_register('old_autoloader');을 정의한 후 추가하십시오.

예를 들어 spl_autoload_register()의 설명서에서 Example #1을 확인하십시오.