2011-10-12 4 views
0

내가처럼 보이는 설정 파일을 생성 한 설정 파일 및 자동 로더를 사용합니다. 나는이 두 파일을 배치해야하는 위치어떻게 현명하게

마찬가지로 자동 로더는

class autoloader { 
    public static $loader; 

    public static function init() 
    { 
     if(self::$loader == NULL) { 
      self::$loader = new self(); 
     } 
     return self::$loader; 
    } 

    public function __construct() 
    { 
     spl_autoload_register(array(this, 'library')); 
     spl_autoload_register(array(this, 'controller')); 
     spl_autoload_register(array(this, 'helper')); 
     spl_autoload_register(array($this, 'model')); 
    } 

    public function library($class) 
    { 
     set_include_path(get_include_path() . PATH_SEPARATOR . '/lib'); 
     spl_autoload_extensions('.php'); 
     spl_autoload($class); 
    } 

    public function controller($class) 
    { 
     set_include_path(get_include_path() . PATH_SEPARATOR . '/controller'); 
     spl_autoload_extensions('.php'); 
     spl_autoload($class); 
    } 

    public function helper($class) 
    { 
     set_include_path(get_include_path() . PATH_SEPARATOR . '/helper'); 
     spl_autoload_extensions('.php'); 
     spl_autoload($class); 
    } 

    public function model($class) 
    { 
     set_include_path(get_include_path() . PATH_SEPARATOR . '/model'); 
     spl_autoload_extensions('.php'); 
     spl_autoload($class); 
    } 
} 
  • 처럼 보인다? 루트 폴더에 있습니까?
  • $config은 응용 프로그램에서 어떻게 사용할 수 있습니까?
  • index.php에서 어떻게 사용할 수 있습니까? 배열도 $config 배열로 작성해야합니까?
  • config.php 파일에 대한 직접 액세스를 어떻게 거부합니까?
+0

오토로더를 싱글 톤으로 만들려고한다면,'__construct()'의 가시성을 줄여서'autoloader :: init()'명령을 사용하도록 강요해야합니다. 그것의 유일한 인스턴스. config 파일에 대해 – jprofitt

+0

을 찾으려면 다음을 참고하십시오. http://php.net/manual/en/function.parse-ini-file.php – dqhendricks

답변

1

에는 설정 파일이 포함되어야합니다. require_once를 사용하는 것이 좋습니다. 이 코드를 구성 변수가 필요한 파일에 추가하십시오. 이를 수행하는 가장 좋은 방법은 일반적으로 index.php 인 컨트롤러 파일을 사용하는 것입니다. 그렇게하면 require_once를 단일 파일에 추가하기 만하면됩니다.

require_once("./config.php"); 

사람들이 당신의 데이터베이스 암호를 볼 수에 대해 걱정하지 마십시오, 모든 PHP 변수는 순수하게 서버 측이며, 명시 적으로 밖으로 에코하지 않는 한 PHP 코드 나 변수는 클라이언트에 의해 볼 수 없습니다.