Php 我需要一个else if语句吗?还是没有必要?
此功能用于删除图像。如果试图删除图像的用户不是该图像的作者或管理员,则第一个if将重定向回,否则if将检查该用户是否具有管理员角色,如果用户具有管理员角色,则图像将被删除。最后,如果用户不是管理员并且是图像的作者,那么最后一位代码也会删除图像 现在我的问题是,我是否需要代码的else if部分?我可以只使用一个小if语句,如果用户既不是管理员也不是作者,则重定向,然后删除图像,因为如果用户通过第一个if,则他肯定是管理员或作者Php 我需要一个else if语句吗?还是没有必要?,php,laravel,Php,Laravel,此功能用于删除图像。如果试图删除图像的用户不是该图像的作者或管理员,则第一个if将重定向回,否则if将检查该用户是否具有管理员角色,如果用户具有管理员角色,则图像将被删除。最后,如果用户不是管理员并且是图像的作者,那么最后一位代码也会删除图像 现在我的问题是,我是否需要代码的else if部分?我可以只使用一个小if语句,如果用户既不是管理员也不是作者,则重定向,然后删除图像,因为如果用户通过第一个if,则他肯定是管理员或作者 public function deleteImage($image
public function deleteImage($imageId){
$image = Image::where('id', $imageId)->first();
if (!Auth::user()->hasRole('Admin')) {
if (Auth::user() != $image->user){
return redirect()->back();
}
} else if (Auth::user()->hasRole('Admin')) {
$imageName = $image->image_file_name;
$image->tags()->detach();
$image->delete();
Storage::delete('public/uploads/images/'.$imageName);
Storage::delete('public/uploads/images/thumbnails/'.$imageName);
Storage::delete('public/uploads/images/specificImages/'.$imageName);
Storage::delete('public/uploads/images/miniImages/'.$imageName);
$imageChildren = Image::where('parent_id', $image->id)->get();
foreach ($imageChildren as $imageChild) {
Storage::delete('public/uploads/images/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/thumbnails/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/specificImages/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/miniImages/'.$imageChild->image_file_name);
$imageChild->delete();
}
return redirect()->route('home');
}
$imageName = $image->image_file_name;
$image->tags()->detach();
$image->delete();
Storage::delete('public/uploads/images/'.$imageName);
Storage::delete('public/uploads/images/thumbnails/'.$imageName);
Storage::delete('public/uploads/images/specificImages/'.$imageName);
Storage::delete('public/uploads/images/miniImages/'.$imageName);
$imageChildren = Image::where('parent_id', $image->id)->get();
foreach ($imageChildren as $imageChild) {
Storage::delete('public/uploads/images/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/thumbnails/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/specificImages/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/miniImages/'.$imageChild->image_file_name);
$imageChild->delete();
}
return redirect()->route('home');
}
下面的例子应该做同样的事情。您不需要else if,因为一旦满足第一个条件,它将始终执行相同的执行。我还连接了第一个条件以包括对author和image user的检查
public function deleteImage($imageId){
$image = Image::where('id', $imageId)->first();
if (!Auth::user()->hasRole('Admin') && Auth::user() != $image->user) {
return redirect()->back();
}
$imageName = $image->image_file_name;
$image->tags()->detach();
$image->delete();
Storage::delete('public/uploads/images/'.$imageName);
Storage::delete('public/uploads/images/thumbnails/'.$imageName);
Storage::delete('public/uploads/images/specificImages/'.$imageName);
Storage::delete('public/uploads/images/miniImages/'.$imageName);
$imageChildren = Image::where('parent_id', $image->id)->get();
foreach ($imageChildren as $imageChild) {
Storage::delete('public/uploads/images/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/thumbnails/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/specificImages/'.$imageChild->image_file_name);
Storage::delete('public/uploads/images/miniImages/'.$imageChild->image_file_name);
$imageChild->delete();
}
return redirect()->route('home');
}
是的,我想是的。谢谢