- array_push: documentation ( source)
- array_merge: documentation ( source)
- array_flip: documentation ( source)
- array_diff_key: documentation ( source)
<?php
function array_exclude(array $arr, array $blacklist){
return array_diff_key($arr, array_flip($blacklist));
}
function resource($data) {
$name = $data["name"];
$prefix = isset($data["prefix"]) ? $data["prefix"] : "";
$except = isset($data["except"]) ? $data["except"] : [];
$methods = $this->array_exclude(['create', 'edit', 'delete'], $except);
$result = [];
foreach($methods as $method){
array_push($result, "$prefix.$name.$method");
}
return $result;
}
function makePermissions($blueprint){
$result = [];
foreach ($blueprint as $item){
switch(gettype($item)){
case "string":
array_push($result, $item); break;
case "array":
$result = array_merge($result, $this->resource($item)); break;
}
}
return $result;
}
print_f(makePermissions([]));