前言
ThinkPhp5问世已近一年,然而仍然有很多的坑,然后不由得想起Laravel的好了。当然TP5仍然需要时间去做得更好。今天要说的确是ThinkPhp3。thinkphp3是个成熟的框架。java有maven,php有packagist,然而packagist里的库于thinkphp3确是水土不服,我想这就是thinkphp5的诞生契机之一吧。我是个懒人,有现成的库可以使用,我觉得没必要再去写,不然公共库的意义就不大了至于为什么会水土不服,大概就是autoload的方式不一样,关于这点且不深究。
干货进入composer库,查找关键字phpspreadsheet,找到该库在github上的地址,然后down下来
解压到本地,找到目录下面的src下面的phpspreadsheet文件夹
先看一眼这个文件夹下随便一个php文件的namespace
再在Thinkphp的框架目录下面Library/Vendorc创建PhpOffice文件夹,然后将down下来的库里xxx/src/目录下的PhpSpreadsheet文件夹整个copy到PhpOffice文件夹下
最后只需要修改copy过来文件的后缀就可以了。下面是脚本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库里的实例
以上方法并不是对所有的packagist里面的库都适用,各位需随机应变呐查看原文