<?php
namespace MyApp;
class ImageUploader {
private $_imageFileName;
public function upload() {
try {
// error check
$this->_validateUpload();
// type check
$ext = $this->_validateImageType();
// var_dump($ext);
// exit;
// save
$savePath = **$this->_save($ext);**
// create thumbnail
$this->_createThumbnail($savePath);
} catch (\Exception $e) {
echo $e->getMessage();
exit;
}
// redirect
header('Location: http://' . $_SERVER['HTTP_HOST']);
exit;
}
private function _createThumbnail($savePath) {
$imagesize = getimagesize($savePath);
$width = $imageSize[0];
$height = $imageSize[1];
}
**private function _save($ext) {
$this->_imageFileName = sprintf(
'%s_%s.%s',
time(),
sha1(uniqid(mt_rand(), true)),
$ext
);
$savePath = IMAGES_DIR . '/' . $this->_imageFileName;
$res = move_uploaded_file($_FILES['image']['tmp_name'], $savePath);
if ($res === false) {
throw new \Exception('Could not upload!');
}
return $savePath;
}**
private function _validateImageType() {
$imageType = exif_imagetype($_FILES['image']['tmp_name']);
switch($imageType) {
case IMAGETYPE_GIF:
return 'gif';
case IMAGETYPE_JPEG:
return 'jpg';
case IMAGETYPE_PNG:
return 'png';
default:
throw new \Exception('PNG/JPEG/GIF only!');
}
}
private function _validateUpload() {
// var_dump($_FILES);
// exit;
if (!isset($_FILES['image']) || !isset($_FILES['image']['error'])) {
throw new \Exception('Upload Error!');
}
switch($_FILES['image']['error']) {
case UPLOAD_ERR_OK:
return true;
case UPLOAD_ERR_INI_SIZE:
case UPLOAD_ERR_FORM_SIZE:
throw new \Exception('File too large!');
default:
throw new \Exception('Err: ' . $_FILES['image']['error']);
}
}
}
### 前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
### 発生している問題・エラーメッセージ
```
Fatal error: Call to undefined method MyApp\ImageUploader::_save() in /home/vagrant/upload_image_php/ImageUploader.php on line 20
```
### 該当のソースコード
```ここに言語名を入力
ソースコード
```
### 試したこと
エラーメッセージのline20のスペルミス、打ち間違い、半角等探したんですが、見つからず、お手本のコードをコピペしても
エラーが消えず困ってます。
### 補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
コードはマークダウンのcode機能を利用してご提示ください。
ドットインストールって講師(?)に質問できるはずじゃ
あなたの回答
tips
プレビュー