2012-05-01 1 views
-2

비슷한 질문을 몇 개 찾았지만 약간 다른 뉘앙스가 있습니다. 즉, 포함 된 파일을 편집 할 수 없습니다.이름이 충돌하는 포함 된 PHP 컨텐트에서 값을 검색하려면 어떻게해야합니까?

동일한 PHP 응용 프로그램의 수십 개의 클론이있는 디렉토리가 있습니다. 데이터베이스 설정을 상수로 정의한 php 파일 인 각 config 파일을 읽은 다음 해당 인스턴스의 DB에 연결해야합니다. 분명히, 모든 설정 파일들이 같은 응용 프로그램을위한 것이기 때문에, 디렉토리를 돌아 다니며 모든 설정 파일을 포함하면 100 개의 "Constant DB_HOST already defined"알림을 얻을 수 있습니다.

각 설정 파일에 PHP 네임 스페이스를 추가 할 수 있다면 충분히 쉽지만 설정 파일은 수정할 수없고 읽기만 가능합니다. 디렉토리 내용을 읽는 루프 내에서 네임 스페이스를 구축하는 것은 불가능하기 때문에 저는 막혔습니다.

fopen/file_get_contents를 사용하여 파일을 읽은 다음 내용을 다시 구문 분석하는 것 외에이 구성 파일을 반복하여 상수 값을 포함하는 독창적 인 방법이 있습니까? 내가 뭔가를 간과해야하는 것처럼 느껴진다.

감사

답변

0

각 파일에 포함을 사용하는 대신 텍스트 파일로 각 파일을 열고 단순히 fread()을 사용하여 각 파일의 내용을 문자열로 읽을 수 없었습니까?

그러면 정규식을 사용하여 원하는 필드를 구문 분석 할 수있게되고 PHP로 설정 파일을 포함하지 않으므로 지속적인 문제를 피할 수 있습니다.

+0

필자는 PHP가 직접 파일을 처리하는 대신 PHP가 파일을 구문 분석 할 수있게하는 또 다른 솔루션을보고 싶어했지만 이것은 궁극적으로 유일한 옵션이었습니다. 내가이 질문에 답하기를 원하지 않는다고 언급 했음에도 불구하고 이것은 대답에 가장 가까운 것 같다. – jxn

1

이 분명히 훌륭한 디자인의 문제이며, 그대로 난장판을 떠나는 일정 문제를 해결하지 바보 트릭에 의해, 디자인을 변경하여 해결해야한다.

+0

동의하지만 유감스럽게도 앱 인스턴스가 내 통제하에 있지 않으므로 그 부분을 현명하게 남겨 둘 수 밖에 없습니다. – jxn

0

아무 것도 바라 보지 않았습니다. manual에서 :

일단 상수가 정의되면 변경되거나 정의되지 않을 수 있습니다.

그리고 BTW, 난 당신이 엉망이 된 리팩터링 프로젝트를 얻을 수 있기를 바랍니다. :)

+0

나는 소원한다. 안타깝게도 수십 가지 앱 인스턴스가 내 제어하에 있지 않아 만지기 만하면됩니다. (불평) – jxn

관련 문제