2011-03-20 3 views
0

이것은 더 개념적인 질문입니다. 일반 웹 사이트를 실행하는 PHP 프레임 워크가 있다고 가정하십시오.프레임 워크의 "설정"을 배치 할 위치

프레임 워크 동작을 설정으로 조정할 수 있지만 질문은 다음과 같습니다. 이러한 설정을 더 자연스럽게 배치 할 수있는 곳은 어디입니까?

내 프레임 워크는 일부 작업 (예 : 캐시 관리)을 수행하는 데 도움이되는 몇 가지 기능으로 구성됩니다.

function manageCache() { 
    global $config; 

    //> perform task with settings from $config 
} 

내 프레임 워크의 절차 적 특성을 고려하고, 사실 누군가가 global is evil를 말한다 :이에서

내가 일반 변수를

$config = array('setting1'=>'value1' etc); 

을 사용하고 기능을 필요로하는 경우 그것은 global가하는 FW , 어떻게 설정을 관리하겠습니까?

감사

EDIT1 : 내가 설정의 톤을 가지고, constats를 사용하는 말하지 않고 나는 그들이 설정이 경우

+0

오픈 소스이고 대부분 프로 시저 프레임 워크 인 경우 [이 목록] (http://stackoverflow.com/questions/3023818/any-procedural-non-oo-php-framework)에 추가하십시오. – mario

+0

@mario : 나는 그것을 썼다 :(어딘가에 넣을 것이라고 다른 문서가 없다 :) –

답변

0

구성 배열에 문제가 없습니다. 그것은 꽤 일반적인 접근 방식입니다. 오류 globals are evil은화물 컬트 프로그래밍 조언입니다. 무시하세요.

이제 $config 어레이는 자주 사용하기가 쉽습니다. 그러나 당신은 그것을 확장 할 수 있습니다.

$config = new ArrayObject($config, 2); 

이 당신이 $config["setting"]$config->setting 모두 같은 설정에 액세스 할 수 있습니다 : 예를 한번 초기화 된 ArrayObject로를 설정하는 것은 매우 간단합니다. 눈이 쉬워졌습니다.

가끔씩 하나의 값만 필요하기 때문에 배열을 모든 곳으로 가져 오지 않으려면 편의를 위해 래퍼 함수 config("setting")으로 확장하십시오.

Btw, 보통 구성 배열과 상수를 혼용하고 있습니다. 그리고 플러그인과 설정 어레이를위한 작은 관리 도구를 중앙 config.php에 만들었습니다. http://web135.srv3.sysproserver.de/milki.erphesfurt.de./genericplugins/genconfig.html

+0

나는 global $ config를 고수 할 것이다. – dynamic

0

편집해야합니다 일정 +의 톤을 만들고 싶어하지 마십시오 상수 다음 define() 사용을 고려 변경하지 마십시오 -

//Set anywhere like this 
define("DB_NAME", "stackoverflow"); 

// You can then read it from anywhere using 
echo DB_NAME; 

그들은 다음 globals을 사용할 수 있습니다 편집 할 필요가 http://php.net/manual/en/function.define.php,하지만 register_globals가 꺼져 있는지 확인합니다.

PHP5를 사용하는 경우 Registry pattern을 구현하면됩니다.

0

변수가 아닌 define을 사용하려고합니다. 적어도 글로벌 변수가 필요하지 않으므로 변수가 필요합니다. 말했다

, 당신은 (쉽게) 등은이를 고려하는 것이 좋습니다 그래서 정의를 통해 배열로 저장 복잡한 데이터 유형.

0

기능의 매개 변수로 지구를 통과 할 수

manageCache($config); 

세계는 정말 사악합니다.

+0

그렇지 않다. 그러나 밈은 악합니다. – mario

0

일반적으로 시작시 자동 포함하는 프레임 워크 어딘가에 구성 폴더가 있습니다.

그것은 잠재적으로 같을 것이다 : 당신은 다음이 구성 변수를 가져 오기 및 인스턴스 변수로 변환 처리하는 구성 클래스 같은 것을했을

ROOT/ 
    config/ 
    db.php 
    cache.php 
    constants.php 

. 이렇게하면 다음과 같은 구성 변수에 액세스 할 수 있습니다.

$config->get_config('settings_1'); 
관련 문제