권한 관리 시스템을 개발할 때는 종종 권한 데이터간에 다른 형식으로 변환해야합니다. 예를 들어, 권한 식별자는 데이터베이스 (예 : view_user , edit_post )에 저장되지만 인터페이스를 표시 할 때 더 친근한 권한 이름이 필요합니다 (예 : "사용자보기"및 "편집 기사").
권한 매핑 배열을 유지하는 경우 PHP의 Array_flip () 함수를 사용하면 식별자의 리버스 매핑을 허가 이름으로 빠르게 구현하는 데 도움이 될 수 있습니다. 이 기사는 사용법과 예방 조치에 대해 이야기 할 것입니다.
일반적으로 권한 식별자에 대한 권한 이름 배열을 정의합니다.
$permissions = [
'사용자를 봅니다' => 'view_user',
'사용자 편집' => 'edit_user',
'사용자 삭제' => 'delete_user',
'기사 게시' => 'publish_post',
'기사를 편집하십시오' => 'edit_post',
];
이 구조는 UI의 드롭 다운 옵션 또는 확인란을 렌더링하는 데 적합하지만 시스템이 식별자를 가져 오면 (예 : API가 edit_post를 반환) 해당 중국어 이름을 어떻게 신속하게 찾을 수 있습니까?
PHP의 array_flip ()는 키와 배열 값을 결합 할 수 있으므로 권한 식별자에서 권한 이름으로 매핑 테이블을 만들기가 매우 쉽습니다.
$codeToName = array_flip($permissions);
현재 $ Codetoname 의 구조는 다음과 같습니다.
[
'view_user' => '사용자를 봅니다',
'edit_user' => '사용자 편집',
'delete_user' => '사용자 삭제',
'publish_post' => '기사 게시',
'edit_post' => '기사를 편집하십시오',
]
다음으로 권한 식별자를 통해 해당 이름을 빠르게 얻을 수 있습니다.
$code = 'edit_post';
echo $codeToName[$code]; // 산출:기사를 편집하십시오
허가 확인 인터페이스가 있다고 가정합니다. 허가 식별자 배열을 반환합니다.
$userPermissions = ['view_user', 'edit_post'];
프론트 엔드 인터페이스 에이 권한의 중국 이름을 표시하려면 다음을 수행 할 수 있습니다.
$permissionNames = array_map(function($code) use ($codeToName) {
return $codeToName[$code] ?? '알 수없는 권한';
}, $userPermissions);
print_r($permissionNames);
출력 결과는 다음과 같습니다.
Array
(
[0] => 사용자를 봅니다
[1] => 기사를 편집하십시오
)
값을 반복 할 수 없습니다 . array_flip ()은 원래 배열의 값을 반복 할 수 없다고 요구합니다. 그렇지 않으면 다음 배열 값이 이전의 값을 덮어 씁니다. 예를 들어:
$arr = ['A' => 'x', 'B' => 'x'];
var_dump(array_flip($arr)); // 보유합니다 'x' => 'B'
정적 매핑에 적합 : Array_flip () 는 일반적으로 비교적 고정 권한 구조가있는 시스템에 적합합니다. 런타임에 권한이 동적으로 생성되면 데이터베이스 또는 캐시 체계를 사용하여 리버스 매핑을 처리하는 것이 좋습니다.
캐시와 결합하여 성능 향상 : 권한 데이터가 데이터베이스 또는 구성 파일에서 제공되는 경우 각 페이지 요청의 오버 헤드를 줄이기 위해 매핑 관계를 캐시 할 수 있습니다.
Array_flip () 사용은 권한 시스템에서 "권한 식별자? 허가 이름"의 상호 변환에 적합한 간단하고 빠르며 효율적인 방법입니다. 특히 인터페이스 디스플레이 또는 로깅을 처리 할 때 개발 효율성 및 코드 가독성이 크게 향상 될 수 있습니다.
PHP 기반 권한 시스템을 개발중인 경우 Mapping Logic에 Array_flip ()를 적용하고 편의를 즐기십시오!