FILTER_CALLBACK에서 받은 변수는 항상 문자열입니다.
발단
FILTER_CALLBACK에서 받은 변수 유형에 따라 실례적으로 생성된Validator를 나누고 싶었는데 string만 가져와서 깜짝 놀랐어요
검증을 위해 쓴 것
<?php
$result = filter_var(
2,
FILTER_CALLBACK,
[
'options' => function ($value) {
return $value;
}
]
);
var_dump($result); // string(1) "2"
이 설치(≈규격)는 아마 적합하지 않을 것이다
나는 아래의 이유에서 이 행위가 상감되지 않으려는 일은 거의 없다고 생각한다.
<?php
$result = filter_var(
2,
FILTER_CALLBACK,
[
'options' => function ($value) {
return $value;
}
]
);
var_dump($result); // string(1) "2"
나는 아래의 이유에서 이 행위가 상감되지 않으려는 일은 거의 없다고 생각한다.
문자열로 변환된 위치
여기.에서 호출된 필터와 상관없이 문자열로 변환됩니다.
정확히 말하면 convert_to_string()
를 호출하기 전에'대상이 대상이기 때문에 문자열로 변환할 수 없으면 필터 실패(fail)'라는 처리가 있었다.어쨌든 필터 대상 변수 실례는 필터하기 전에 문자열로 변환됩니다.
호출 필터의 경우'호출 필터 자체'는 여과 처리에 해당하기 때문에 사전에 문자열로 변환한 후에 변수를 전달해야 한다.
그나저나 아까 확인했는데 문서에서 "값을 필터하기 전에 내부를 문자열로 변환하는 것을 주의하십시오."위에 쓰여 있다.
Reference
이 문제에 관하여(FILTER_CALLBACK에서 받은 변수는 항상 문자열입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ndxbn/items/6c0cec139607420634f9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(FILTER_CALLBACK에서 받은 변수는 항상 문자열입니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ndxbn/items/6c0cec139607420634f9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)