PHPで例外処理でのメーッセージはどの程度詳細に記述すればよいのでしょうか。
例えば以下のようにファイルをアップロードするクラス内で例外処理をした場合、例外をスローする各箇所のコードの行数なんかを投げてもいいのでしょうか?
PHP
1<?php 2 3namespace yuuhi\imgUploader; 4 5class Uploader{ 6 7 private $info; 8 9 private function fileCheck() 10 { 11 if (!isset($_FILES['upfile']['error']) || !is_int($_FILES['upfile']['error'])) { 12 throw new FileUploadException('yuuhi\imgUploader\Uploader::fileCheck() at line 12'); 13 } 14 15 switch ($_FILES['upfile']['error']) { 16 case UPLOAD_ERR_OK://アップロードOK 17 break; 18 case UPLOAD_ERR_NO_FILE://ファイルが選択されていない 19 throw new FileUploadException('yuuhi\imgUploader\Uploader::fileCheck() at line 19'); 20 case UPLOAD_ERR_INI_SIZE://php.iniのアップロード上限値を超過 21 throw new FileUploadException('yuuhi\imgUploader\Uploader::fileCheck() at line 21'); 22 case UPLOAD_ERR_FORM_SIZE://フォームでのアップロード上限値を超過(フォームにて上限値を設定していた場合) 23 throw new FileUploadException('yuuhi\imgUploader\Uploader::fileCheck() at line 23'); 24 default://その他のエラー 25 throw new FileUploadException('yuuhi\imgUploader\Uploader::fileCheck() at line 25'); 26 } 27 28 if (false === $this->info = @getimagesize($_FILES['upfile']['tmp_name'])) {//ファイルの情報取得 29 throw new FileUploadException('yuuhi\imgUploader\Uploader::fileCheck() at line 29');//ファイルの情報取得エラー 30 } 31 32 if (!in_array($this->info[2], [IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG], true)) {//拡張子チェック 33 throw new FileUploadException('yuuhi\imgUploader\Uploader::fileCheck() at line 33');//拡張子エラー 34 } 35 36 return; 37 } 38 39 public function upload(string $path = null,bool $duplication) 40 { 41 try { 42 43 $this->fileCheck(); 44 45 if ($duplication) { 46 //重複したデータを許す(重複しない値を生成するまでループ) 47 while(is_file($fileName = $path . '/' . bin2hex(openssl_random_pseudo_bytes(32)) . image_type_to_extension($this->info[2]))); 48 }else { 49 //一意なファイル名生成 50 $fileName = $path . '/' . sha1_file($_FILES['upfile']['tmp_name']) . image_type_to_extension($this->info[2]); 51 } 52 53 fopen($fileName, 'xb');//排他的にファイルを生成(既にファイルが存在している場合はWarningが発生する) 54 55 if (!move_uploaded_file($_FILES['upfile']['tmp_name'], $fileName)) {//作成したファイルを上書き(移動) 56 throw new FileUploadException('yuuhi\imgUploader\Uploader::upload() at line 56');//ファイルの移動失敗 57 } 58 59 chmod($fileName, 0644);//パーミッションを0644に設定 60 61 return [ 62 'status' => 'success', 63 'message' => 'Successfully uploaded the file.' 64 ]; 65 66 67 } catch (FileUploadException $e) { 68 return [ 69 'status' => 'error', 70 'message' => $e->getMessage() 71 ]; 72 } 73 } 74} 75
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/24 13:42