私はこれについて本当に興味があり、実装する予定はありませんが、適切な条件が発生した場合に使用するクールな制御構造になると思います.
ユーザーが表示しようとしているデータの種類を表すブール値の配列があり、ユーザーがそのデータを表示する権限を持っているかどうかを示すブール値のオブジェクトがあります。
というifステートメントのリストの代わりに、代わりにif(permission and display){show this type}
switch(true)を使用して、実際には同じ量のコードを記述しますが、少し適切にフォーマットするcontinue;
ことを考えました。いいね。
switch(true){
case ($processPermissions->history->view) && ($display['history'] !== false):
$application['history'] = $this->getHistory();
continue;
case ($processPermissions->notepad->view) && ($display['notepad'] !== false):
$application['notepad'] = $this->notepad('get');
continue;
case ($processPermissions->documents->view) && ($display['documents'] !== false):
$application['documents'] = $this->documents('get');
continue;
case ($processPermissions->accounting->view) && ($display['accounting'] !== false):
$application['accounting'] = $this->accounting('get');
continue;
case ($processPermissions->inspections->view) && ($display['inspections'] !== false):
$application['inspections'] = $this->inspections('get');
continue;
case ($processPermissions->approvals->view) && ($display['approvals'] !== false):
$application['approvals'] = $this->approvals('get');
continue;
}
実際には、配列を作成してそれをループ処理するだけです。これは、各ケースのコードが同一であるためです。
..しかし、私が望むなら、これをどのように機能させることができるかについて、私は非常に興味があります。