Util::getReq 함수 추가. 정적 분석 버그를 우회하기 위한 Validator::rule 함수 추가.

This commit is contained in:
2018-04-07 14:24:20 +09:00
parent 6140da5783
commit 3e069d14f2
2 changed files with 72 additions and 3 deletions
+54
View File
@@ -3,6 +3,60 @@ namespace sammo;
class Util extends \utilphp\util
{
/**
* $_GET, $_POST에서 값을 가져오는 함수. Util::array_get($_POST[$name])을 축약 가능.
* 타입이 복잡해질 경우 이 함수를 통하지 않고 json으로 요청할 것을 권장.
*
* @param string $name 가져오고자 하는 key 이름.
* @param string $type 가져오고자 하는 type. [string, int, float, bool, array, array_string, array_int]
* @return int|float|string|null
* @throws \InvalidArgumentException
*/
public static function getReq(string $name, string $type = 'string'){
if(isset($_GET[$name])){
$value = $_GET[$name];
}
else if(isset($_POST[$name])){
$value = $_POST[$name];
}
else{
return null;
}
if(is_array($value)){
if($type === 'array_int'){
return array_map('intval', $value);
}
if($type === 'array_string'){
return array_map(function($item){
return (string)$item;
}, $value);
}
if($type === 'array'){
return $value;
}
throw new \InvalidArgumentException('지원할 수 없는 type 지정. array 가 붙은 type이어야 합니다');
}
if($type === 'bool'){
return !!$value;
}
if($type === 'int'){
return (int)$value;
}
if($type === 'float'){
return (float)$value;
}
if($type === 'string'){
return (string)$value;
}
throw new \InvalidArgumentException('올바르지 않은 type 지정');
}
public static function hashPassword($salt, $password)
{
return hash('sha512', $salt.$password.$salt);
+18 -3
View File
@@ -1,9 +1,6 @@
<?php
namespace sammo;
/**
* @method \sammo\Validator rule(string, array<string>|string, null|int|string|array<int|string> $option=null)
*/
class Validator extends \Valitron\Validator
{
protected static $_lang = 'ko';
@@ -17,4 +14,22 @@ class Validator extends \Valitron\Validator
$errors = join(', ', $errors);
return $errors;
}
/**
* Convenience method to add a single validation rule
* Phan의 오동작으로 PhanUndeclaredFunctionInCallable가 발생하는것을 억제하기 위해서 별도 제작.
* $rule에 함수를 넣는 대신 상속한 클래스에 추가하는 방식을 사용할 것.
*
* @suppress PhanUndeclaredFunctionInCallable
*
* @param string $rule
* @param array|string $fields
* @return $this
* @throws \InvalidArgumentException
*/
public function rule($rule, $fields){
$params = array_slice(func_get_args(), 2);
return parent::rule($rule, $fields, $params);
}
}