第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

扒出并移植ThinkPHP自帶“上傳類“秒懂“驅(qū)動”

標簽:
PHP 測試

一直在跟着singwa老师的课程在学习,按照老师的课程使用ThinkPHP开发了一个CMS系统。
开发完整个网站系统以后,对整个网站开发的业务逻辑算是走通了,但是还有一些问题就是,使用框架的话有一些核心的类是框架自身已经集成好了,用起来确实很方便,不过就学习而言我们还是要读一读框架的核心类文件的。这也是singwa老师一直跟我说的:“学习框架要弄懂弄通一个这个框架的内核,这样对学习才有帮助”。所以才有了下面的,扒出来thinkPhP的自带上传类。不废话了直接进入场景:

我这边是自己写了一个小框架,然后试着把整个CMS站移植过来,尽量还原成原生的状态。不过整个过程也不是那么的顺利,今天就碰到了这个功能费了很大劲才做出来。

这个功能是 利用 uploadify插件 完成图片的异步上传。

图片描述
当我把这个功能的控制器和模型都搭建好以后我发现我缺一个成熟的文件上传类!这个时候就去网上找了很多 发现都是不合适的苦逼!!~~然后想着不如把TP的上传类给扒下来吧!。好主意!~ 然后就是复制粘贴了!。如下图:
当然,事情不会这么顺利,整个类移植过来以后肯定是彻底不能用的!在看TP的上传类的时候 “驱动”两个字一直让处于懵逼状态。经过这次移植我才明白了原来这个“驱动”其实就是加载一个外部的类。看代码:
图片描述

【下图里圈出来的方法再TP的上传类里是没有的 其实就是下文所提到的“驱动”类 里的方法 】
图片描述

而uploader 是 “驱动”类的对象
图片描述

看到这几张图就应该明白了吧,其实TP 上传类 里的驱动 就是加载一个外部的类,而这个类里的方法可以说成是TP上传主类的 某一种上传的形式。而TP默认的上传方式 就是Local.class.php 这个类了!
图片描述

那么为什么TP默认的上传驱动类是load.class.php呢?我们回头看一下TP上传主类中的 设置上传驱动 方法!

  /**
     * 设置上传驱动
     * @param string $driver 驱动名称
     * @param array $config 驱动配置     
     */
    private function setDriver($driver = null, $config = null){
//看这里!也就是说 如果$driver为空  默认就是   C('FILE_UPLOAD_TYPE')
        $driver = $driver ? : ($this->driver       ? : C('FILE_UPLOAD_TYPE'));
        $config = $config ? : ($this->driverConfig ? : C('UPLOAD_TYPE_CONFIG'));
        $class = strpos($driver,'\\')? $driver : 'Think\\Upload\\Driver\\'.ucfirst(strtolower($driver));
        $this->uploader = new $class($config);
        if(!$this->uploader){
            E("不存在上传驱动:{$name}");
        }
    }

再返回来看一下配置文件里的配置项:
图片描述

是不是瞬间明白了!!好啦 这次分享就到这里,文笔差废话多 大神莫喷!另外感谢singwa老师的thinkPHP实战开发课程。碉堡~

by:橙橙同学 QQ 543577508

點擊查看更多內(nèi)容
17人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學(xué)

大額優(yōu)惠券免費領(lǐng)

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報

0/150
提交
取消