在ThinkPHP3中優雅的使用github中php相關庫

前言

ThinkPhp5問世已近一年,然而仍然有不少的坑,而後不禁得想起Laravel的好了。固然TP5仍然須要時間去作得更好。今天要說的確是ThinkPhp3。thinkphp3是個成熟的框架。java有maven,php有packagist,然而packagist裏的庫於thinkphp3確是水土不服,我想這就是thinkphp5的誕生契機之一吧。我是個懶人,有現成的庫能夠使用,我以爲不必再去寫,否則公共庫的意義就不大了至於爲何會水土不服,大概就是autoload的方式不同,關於這點且不深究。php

乾貨

  1. 進入composer庫,查找關鍵字phpspreadsheet,找到該庫在github上的地址,而後down下來
    圖片描述java

  2. 解壓到本地,找到目錄下面的src下面的phpspreadsheet文件夾
    圖片描述git

  3. 先看一眼這個文件夾下隨便一個php文件的namespace
    圖片描述github

  4. 再在Thinkphp的框架目錄下面Library/Vendorc建立PhpOffice文件夾,而後將down下來的庫裏xxx/src/目錄下的PhpSpreadsheet文件夾整個copy到PhpOffice文件夾下thinkphp

  5. 最後只須要修改copy過來文件的後綴就能夠了。下面是腳本composer

public function change_suffix(){
    $basepath = realpath(THINK_PATH)."\\";
    $path = 'Library\\Vendor\\PhpOffice';
    $all = array();
    $this->getFileInDir($basepath.$path,$all);
    foreach ($all as $one){
        if(strpos($one, 'class') === false){
            $new_name = str_replace('.php', '.class.php', $one);
            rename($one, $new_name);
        }
    }
}
private function getFileInDir($dir,&$all){
    if(is_dir($dir)){
        $ss = scandir($dir);
        unset($ss[1]);
        unset($ss[0]);
        foreach ($ss as $s){
            $sdir = $dir.'\\'.$s;
            if(is_dir($sdir) && $s != 'Default'){
                $this->getFileInDir($sdir,$all);
            }else{
                $all[] = $sdir;
            }
        }
    }
}

最後在config.php文件裏面加上框架

'AUTOLOAD_NAMESPACE'          => array(
    'PhpOffice'               => THINK_PATH.'Library/Vendor/PhpOffice',
),

你就能夠用$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();這種方式來new庫裏的實例maven

以上方法並非對全部的packagist裏面的庫都適用,各位需隨機應變吶thinkphp5

相關文章
相關標籤/搜索