2010-04-06 7 views
1

현재 프로젝트에서 HTMLPurifier를 사용하고 있으며 여러 구성을 처리하는 가장 효율적인 방법에 대해 확신하지 못합니다. 대부분 중요한 변경 사항은 허용 된 태그뿐입니다.여러 HTMLPurifier 구성을 효율적으로 처리하는 방법

현재 HTMLPurifier를 사용하는 각 클래스에서 개인 설정이 필요합니다.이 설정은 구성이 필요할 때 호출되어 기본값에서 하나를 만듭니다. 2 개의 클래스가 같은 설정을 사용하고 있고, 코드를 복제하고 있고, 클래스가 2 개의 설정을 필요로한다면 어떨까요? 그냥 지저분 해.

거꾸로 말하면, 필요할 때까지는 아무 것도 만들지 않는다는 의미에서 게으른 것입니까? 다양한 클래스를 사용하여 아무 것도 정제 할 필요가 없습니다. 그래서 나는 심지어 사용되지 않을 수도있는 많은 설정 객체를 만들고 싶지 않습니다. 그래서 같은

나는 최근에 당신이 HTMLPurifier의 새 인스턴스를 만들 수 있다는 것을 발견하고 직접 설정

설정 옵션 :

$purifier = new HTMLPurifier(); 
$purifier->config->set('HTML.Allowed', ''); 

나는 나쁜 형태 모두에서의 여부를 잘 모르겠어요, 그리고 경우 내가 사용하기에 좋은 방법이 있을지 잘 모르겠다.

최신 아이디어는 후속 정화 호출에 사용할 HTMLPurifier 구성을 반환하는 구성 처리기 클래스를 만드는 것이 었습니다. 어떤 시점에서 configs 설정을 허용하도록 확장 될 수 있지만 처음부터 하드 코딩 된 것으로 생각하고 요청 된 구성을 가져 오기 위해 스위치를 통해 메서드 매개 변수를 실행했습니다. 어쩌면 나는 인자로 저장된 정수기 인스턴스를 보내고 메소드가 직접 위에 설정 한 것과 같은 설정을 가질 수 있습니까?

내가 생각한 몇 가지 방법 중 가장 좋은 방법 인 것 같지만, 그런 작업이 클래스를 만들어서 처리해야하는지 잘 모르겠다. 그렇다면 최선을 다하면 방법.

HTMLPurifier의 내부 동작에 너무 익숙하지 않아 여러 구성을 처리하기위한 더 나은 메커니즘이 있는지 잘 모르겠습니다.

누구나 제공 할 수있는 통찰력에 감사드립니다.

답변

1

간단하고 간단한 config 처리기 클래스를 작성했습니다. 당신은 http://gist.github.com/358187/

@ 사용/볼 수 있습니다

그것은 초기화시 CONFIGS의 배열을합니다.

직접 배열에 저장되는 지시문은 전역이며 모든 구성에 적용됩니다. 같은 지시어가 named config 안에 설정되면, named config의 값이 사용됩니다.

그런 다음 당신은 너무 같은 설정을 잡을 수 있습니다

$purifierConfig = new purifierConfig($configs); 
$commentsConfig = $purifierConfig->getConfig('comments'); 

또는 속기 :

$commentsConfig = $purifierConfig['comments']; 

을 요청 설정이 존재하지 않거나 설정이 호출 기본 설정에 지정되지 않은 경우 반환됩니다.

나는 언젠가 그것을 밖으로 살피지만, 지금은이 작품.

나는 사람들이 프로젝트에서 이런 일들을 어떻게 처리했는지, 또는 이와 비슷한 것을 만들어 낸 메커니즘이 있다면, 내 질문이 범위가 너무 좁은 것 같아.

2

구성 개체에는 하나의 중요한 불변성이 있습니다. 정화 작업을 수행 한 후에는 편집 할 수 없습니다. 클래스에있는 convenience methods 중 일부 (특히 inherit)에 관심이 있고 loadArray을 사용하여 값 배열을로드 할 수 있습니다.

+0

아, 고맙습니다. 일단 설정을 사용하면 편집 할 수 없다는 사실을 알지 못했습니다. 그것은 내가 보여준 조금은 실현 가능하지 않다. - 그 방법을 사용하면 편리하게 구성하고 사용할 수 있지만 더 편리하게 구성 할 수 있습니다. 그것에 대해 가장 좋은 방법에 대한 생각? 감사. – anomareh

+0

글쎄, 당신은 싸게 생성자에 이전 하나 전달하여 다른 config 개체를 만들 수 있습니다. –

+0

나는 내 대답에 올린 글의 라인을 따라 더 많이 찾고 있었다. configs를 만드는 데 문제가 없습니다. 괜찮습니다. 나는 다른 사람들이 여러 가지 다른 설정을 관리하는 방법을 찾고 있었고 그러한 작업을보다 간소화하기위한 기본 제공 메커니즘이 있는지를 찾고있었습니다. - 귀하의 답변과 의견을 주셔서 감사합니다. 그것은 제가하려고했던 것에 대해 깨닫는데 도움이되었습니다. – anomareh

관련 문제