2016-06-19 2 views
-1

require_once 또는 include_once을 사용하여 파일을 포함 시키면 require 또는 include을 사용할 때 정상적으로 작동합니다.'요구'작업을하지만 require_once가 작동하지 않습니다.

public function ParseURL() { 
    require_once (APP_PATH . "config/config.php"); 

    $this->url_as_parts = explode('/', $this->url); 
    $class = isset($this->url_as_parts[0]) ? $this->url_as_parts[0] : $config['default_controller']; 
    $method = isset($this->url_as_parts[1]) ? $this->url_as_parts[1] : "index"; 
    $parms = isset($this->url_as_parts[2]) ? $this->url_as_parts[2] : ""; 

    if (!class_exists($class)) { 
     trigger_error("The class {$class} not exists <br/>"); 
     exit; 
    } 
    $controller = Object::get($class); 
    if (!method_exists($controller, $method)) { 
     header('HTTP/1.0 404 Not Found'); 
     include(SYSTEM_PATH . "languages/" . $config['system_language'] . "/errors/404_not_found.html"); 
     exit;   
    } 

    if (empty($parms)) { 
     $controller->{$method}(); 
    } else { 
     $parms_array = array_slice($this->url_as_parts, 2); 
     call_user_func_array(array($controller, $method), $parms_array); 
    } 
} 

는 다음 줄은 오류를 생성하지 않고 경로가 require_once (APP_PATH . "config/config.php"); 정확하지만 파일 config.php 내부에 액세스 $config['system_language']을 기울인다.

require_oncerequire 또는 include으로 변경하면 모든 것이 정상입니다.

+0

함수를 두 번 사용하고 첫 번째 이후에도 항상이 파일이 포함되어 있지 않으므로? –

+0

Baybe 한 번 포함 시켰고 나중에 코드의 다른 부분에있는'$ config'의 값을 덮어 씁니다. –

+1

아, 함수 안에 있습니다 ... 함수 내에서'global $ config;'를하거나 매개 변수로'$ config'를 전달하십시오 기능에 –

답변

0

config/config.php을 포함하고 있으며 변수 $config을 재정의/덮어 쓸 수 있습니까?

require_once()과 일반 카운터 (include() 등)의 차이는 require_once()에 이전에 포함되지 않은 내용이 포함되어 있고 (해당되는 경우 실행됩니다) 있다는 것입니다.

0

코드에 이미 config/config.php를로드하고 있기 때문일 수 있습니다. require_once(APP_PATH . "config/config.php");을 호출하면 config.php 파일이 이미 포함되어 있으므로 해당 기능 내에 파일이 포함되어 있지 않은지 확인합니다. 귀하의 기능이 $config 변수에 액세스 할 수없는 이유입니다.

희망이 있습니다.

1

으로는 require_once 설명에서 온다 - 파일은 번이 파일의

다른 require_once하지 않습니다 작업이 필요합니다.

그리고 분명히 함수 ParseURL을 두 번 이상 실행합니다. 따라서 require_once은 두 번째 및 연속 호출에서 작동하지 않습니다.

따라서 require 만 사용할 수 있습니다. 또는이 클래스의 일부로 볼 수 있듯이 config 데이터를 클래스 변수에 할당하는 래퍼 메서드를 만듭니다. 즉 :

public function getConfig() 
{ 
    $this->config = require_once('FILE'); 
} 

이 경우 설정 파일해야 설정 변수의 반환 배열 또는 객체.

관련 문제