请帮助澄清这个CodeIgniter示例(在其自身内调用方法)

时间:2012-08-15 14:33:21

标签: php oop codeigniter

关注the example found here in the Codeigniter Users Guide,我想知道在if( !$this->upload->do_upload() )方法中调用do_upload()的内容是什么。

这是代码direclty的粘贴。

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()方法。我错了吗? 原谅我的天真,但我以前从未见过这个......这是一种常见的做法吗? 它做了什么?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

HTH

答案 1 :(得分:1)

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