dev가 조건 규칙에서 조건문을 사용할 수 있도록하여 복잡한 조건을 처리 할 수있는 유효성 검사기를 만듭니다. 요소가 필요하거나하지 않은 경우 결정하는 부울을 반환PHP에서 eval()을 사용하여 조건문이있는 문자열을 평가하지 않으려 고 시도했습니다.
...
"element_name":{
"required": "conditional",
"conditions" : {
"requirements" : "(4 < 5)",
"requirements" : "('something' == 'something_else')"
}
}
...
그 requirements
을 통해 루프가 무엇 PHP가 할 다음 것입니다 코드로 평가 :
규칙 세트와이 예제를 가지고 .
eval()
기능을 사용할 때의 문제점은 매우 분명합니다.
$result = eval(element_name->requirements[0]);
너희들 감사 : 그래서에만 허용됩니다 어떤 해당 조건 문 주어진 있습니다 부탁 해요,보다이 일을 더 안전한 방법이있다.
---- 업데이트 -----
내가 조금을 사용하여 결국, 나는 매우 정직하기 때문에 당신에게 대답 모든 표시 수 있으면 좋겠다, 아이디어 당신에게 마이크 모두 감사 모든 사람의 생각을 Mike의 것보다 더 많이 얻는다.필드를 조건부로 유효성을 검사하는 매우 매력적인 방법이기 때문에 나중에 보게 될 것입니다. 내 목표는 이것에 대한 직관적 인 방법을 만드는 것입니다. json 설정 파일에서 조건문을 간단히 두드리는 아이디어가 마음에 들었다. 물론 심각한 보안 위험이나 복잡한 구문 분석 엔진이 필요하기 때문에 개발자가 조건부 언어를 사용하는 방법을 배우지 않아도되지만 결국에는 원본 언어와 매우 유사하게 유지됩니다. 간단한 API를 사용하는 것이 중요하다고 생각합니다. 그렇지 않으면 플랫폼에서 개발을 방해하게됩니다. 그것을 체크 아웃 : -
"element_name":{
"required": "conditional",
"conditions" : {
"<" : ['4', '5'],
"==" : [':element_id', ':other_element'], // will grab the values of those elements and compare
"exp" : [['something', '==', 'something_else'], 'OR', [':other_element', '!=', '0']]
}
}
개발자는 요구 사항 목록을 정확히 어떻게 제공합니까? – Mike
Mike 사과해야합니다. 코드를 수정했습니다. 그러나 일단 개발자가 '필수'를 '조건부'로 표시하면 dev는 위에서 볼 수있는 조건 목록을 포함하는'conditions' obj/array를 제공 할 것으로 예상됩니다. –
@FelipeTadeo http://www.php.net/manual/en/yaml.installation.php 필자는 비슷한 문제가있어 매우 빠른 libYAML C 라이브러리에서 벗어날 수 있기 때문에 조건부에 사용할 수 있다면 이것을 사용하게 될 것입니다 . 불행히도 모듈을 설치하지 않고 다른 사람의 시스템에서 작동해야합니다. 그래도 YAML을 사용할 수 있다면 json은 실제로 하위 집합이며 YAML은 훌륭한 로직을 가능하게하는 기능을 제공합니다. –