我写了这个函数,我用它来动态地上传图片到我的本地服务器。如何查看并返回if语句中使用的函数的结果?
我跑进了以下问题,是它里面产生的$image_name
,所以当我打电话uploadImage function
我不能返回$image_name
,这样我可以将其插入到数据库中,我不知道如何返回变量。
public function uploadImage($data, $uploadLocation, $nameTag){
if($data['size'] != 0) {
$errors = array();
$maxsize = 16777216;
$acceptable = array(
'image/jpeg',
'image/jpg',
);
$image_extension = pathinfo($data['name'], PATHINFO_EXTENSION);
//image_name variable I'm referring to
$image_name = uniqid($nameTag, true) . '.' . $image_extension;
if($data['size'] >= $maxsize) {
$errors[] = 'File too large. File must be less than 16 megabytes.';
} else if($data['size'] == 0){
$errors[] = 'You need to upload an image.';
}
if((!in_array($data['type'], $acceptable)) || (empty($data['type']))) {
$errors[] = 'Invalid file type. Only JPG, GIF and PNG types are accepted.';
}
if(count($errors) === 0) {
$moveFile = move_uploaded_file($data['tmp_name'], $uploadLocation . '/' . $image_name);
if($moveFile){
return true;
}
}
}
return false;
}
这里我使用uploadImage函数。
$uploadImage = new UploadImages();
if($uploadImage->uploadImage($data['image_data'], 'uploads/img/instructions', 'instruction_')){
//here I'd like to return the $image_name from the function
//I'm using PDO to insert the name in database
$sth = $db->prepare('UPDATE instructions SET image = :image WHERE id = :id');
$sth->bindValue(':image', //name returned from the function, PDO::PARAM_STR);
$sth->bindValue(':id', $instructionsId, PDO::PARAM_INT);
$sth->execute();
}
我计算过,在一段代码:
if($moveFile){
return true;
}
我可能会返回$image_name
,而不是真实的,但我不能确定如何我抓住它是可用的,因为它是内部的如果声明。
任何想法我们如何能够返回这些特定的数据,或者如何更好地重写代码以适应这些需求的建议将是非常好的。
你做你说什么,回'$ image_name'或创建一个像'getImageName()'方法。 – Rasclatt
@Rasclatt它并没有想到创建一个获取图像名称的方法。感谢您的指导。 – Craig