您好我正在使用CakePHP制作一些教程,当我查看if语句时,我陷入困境。
请查看带有三等号的if语句。
class Item extends AppModel{
protected function _processFile(){
$file = $this->data['Item']['file'];
if($file['error'] === UPLOAD_ERR_OK){
$name = md5($file['name']);
$path = WWW_ROOT.'files'.DS.$name;
if(is_uploaded_file($file['tmp_name']) &&
move_uploaded_file($file['tmp_name'],$path)){
$this->data['Item']['title_img'] = '/files/'.$name;
unset($this->data['Item']['file']);
return true;
}
}
return false;
这是我的问题
为什么if语句在上传文件时出错会执行其余的代码来上传文件?
其余代码是否应该“返回false;”?
请让我知道我错过了解if语句。
谢谢你们
答案 0 :(得分:2)
这是基本的php,与CakePHP无关:请参阅http://php.net/manual/en/language.operators.comparison.php以及此链接http://php.net/manual/en/types.comparisons.php。
$a == $b Equal TRUE if $a is equal to $b after type juggling.
$a === $b Identical TRUE if $a is equal to $b, and they are of the same type.
您正在根据类型进行比较,尝试==而不是===。 php不是严格的类型语言,这就是为什么我们有==和===。
一些额外内容:
$this->data['Item']
在模型中使用$this->data[$this->alias]
。如果您不想重新发明轮子,可以查看我的FileStorage插件或查看它的代码。
答案 1 :(得分:1)
UPLOAD_ERR_OK
等于0,实际上意味着上传文件时没有错误。
答案 2 :(得分:1)
this === means that $file['error'] === UPLOAD_ERR_OK
具有相同的类型。
他们有相同的吗?或者$ file ['error']是一个字符串。
尝试2个等待。