2014-06-09 2 views
0

모든 모듈을 자동으로로드 할 수 있도록 자동 로더 클래스를 만들려고합니다. 그러나 문제는 내가 구성 파일에서 전역을 설정 한 후, 바로 사용하여 그들 모두를 호출 할, 수 있습니다 :문자열을 반환하고 코드로 실행

을 configuration.php :

Autoloader::GetGlobals(); 

을 지금까지 나는이 3 개 개의 파일이

<?php 
global $Configuration; 
$Configuration['Globals'] = "Core Database Templates Directory Debugger"; 
?> 

Autoloader.Class.php

<?php 
require_once('Configuration.php'); 
private static $Globals = ""; 
private static $MakeGlobal = "global "; 

public static function GetGlobals() 
    { 
     $ParsedGlobals = ""; 
     $Globals2String = explode(" ", Autoloader::$Globals); 
     foreach($Globals2String as $Global) 
      $Globals[] = "$".$Global; 
     $DefinedGlobals = count($Globals); 
     for ($i = 0; $i < $DefinedGlobals; $i++) 
     { 
      $LastElement = $DefinedGlobals - 1; 
      if($i != $LastElement) 
       $ParsedGlobals .= $Globals[$i].", "; 
      else 
       $ParsedGlobals .= $Globals[$i].";"; 
     } 
     return Autoloader::$MakeGlobal.$ParsedGlobals; 
    } 
?> 
내가 올바른 출력을 얻고있다

:

global Core, Database, Templates, Directory, Debugger; 

다음 일은 (때문에 내가 PHP 코드로 아닌 문자열로이 해석 할, 그리고 내가 eval()를 사용하지 않는다는 것입니다 이것이 마지막으로 사용되는 함수라는 많은 기사를 읽었습니다.)

질문 :이 문자열을 return에서 PHP 코드로 실행하려면 Autoloader::GetGlobals();으로 간단히 호출 할 수 있습니까?

+0

:

function foo($arg) { global $$arg; // note the $$ echo "$arg/$$arg"; } $a = 'bar'; foo('a'); 

출력을 정확하게, "PHP 코드"를 의미합니까? 문자열은 PHP 코드 유형이므로 배열로 변환하려고하십니까? – Dan

+0

나는 그가 스크립트에 삽입하고 php에 의해 변수로 아니라 키워드로 해석하고 싶다고 생각한다. –

+0

그래서 PHP로 전역 변수로 정확하게 실행하고 싶지만 간단한 문자열이 아니다. –

답변

1

는 평가를()를 사용하여 거의 같은 나쁜,하지만 당신은 광기와 혼돈의이 경로 아래로 이동하도록 선택하는 경우 변수 변수는있다 : 당신이 무엇을

a/bar 
관련 문제