1

查看Codeigniter 用户指南中的示例,我想知道if( !$this->upload->do_upload() )do_upload()方法本身内部调用的作用。

这是直接粘贴的代码。

class Upload extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    function do_upload() {
        $config['upload_path'] = './uploads/';
        $this->load->library('upload', $config);

    // ** My question starts here **
        if ( !$this->upload->do_upload() ) {
            $error = array('error' => $this->upload->display_errors());
            $this->load->view('upload_form', $error);
        }
        else{
            $data = array('upload_data' => $this->upload->data());
            $this->load->view('upload_success', $data);
        }
    }
}

如我所见,它正在do_upload()从内部检查方法do_upload()..我弄错了吗?
原谅我的天真,但我以前从未见过这种情况..这是一种常见的做法吗?
它有什么作用?

4

2 回答 2

1
if ( !$this->upload->do_upload() ) {    

正在调用 CI 自己的上传类中的 do_upload 函数。

文档中的示例不是最好的。

所以它不是在你的控制器中再次调用 do_upload ,而是在实际上传的上传类中调用 do_upload 。

高温高压

于 2012-08-15T14:37:03.337 回答
1

它不是调用自己,而是调用控制器对象属性上do_upload的方法。这些方法只是简单地命名相同,但它们属于不同的对象。该对象似乎是在上一步中加载的库(注意:我不知道 CI)。uploadUpload$this->upload'upload'

于 2012-08-15T14:37:38.647 回答