許可管理システムを開発する場合、多くの場合、さまざまな形式で許可データ間を変換する必要があります。たとえば、許可識別子はデータベース( View_user 、 edit_postなど)に保存されますが、インターフェイスを表示するときは、より友好的な許可名(「view user」や「編集記事」など)が必要です。
許可マッピングアレイを維持する場合、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ベースの許可システムを開発している場合は、 Array_flip()をマッピングロジックに適用して、それがもたらす利便性をお楽しみください!