对于没有进入composer的扩展,请通通将他们下载到vendor内。通通的。
还是按照目录来
-
添加不在composer,但是有自己的autoloader的扩展
-
添加不在composer,也没有autoloader的扩展
-
添加在composer里的扩展
-
啥都没有的
那我们开始吧~
号外
先说说自动安装composer扩展吧,当复习了,这个我想是最简单的了,方法有两个
-
composer.json内修改,增加我们想要的扩展,然后执行composer install
-
在当前程序目录直接命令行 composer required xxxxx
无论各种教程还是官方介绍最多的就是这个了,因此我不在多说,进入到今天的主题?
不composer,有autoloader
这种库也蛮多的,尤其一些已经有些年头有些粉丝的库,他们都有自己的autoloader加载器,今天北哥给你讲讲这种库怎么破!
我们都知道入口文件index.php里有两个自动加载,一个是composer的、一个是自己的。
require(__DIR__ . '/../vendor/autoload.php');require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
你不知道?扒光拖出去,送往东莞。
如果你要加载一个有自动加载器的扩展,那就直接将其加载器放到Yii.php这行上面就成了。
你肯定要问有例子么?北哥会没有么?我们就拿最自大的阿里大鱼来说事吧,它能发短信啥的,不过收费。
看到了吧,这货自己有个加载器,太不入群了,没事,我们大Yii是很包容的。按照北哥告诉你的,将其库放到vendor下,然后修改web/index.php文件。
require(__DIR__ . '/../vendor/autoload.php');require(__DIR__ . '/../vendor/alidayu/TopSdk.php');require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
大鱼有些特殊性,需要提前一些常量设置,我们引入了TopSdk.php(内已经require("Autoloader.php"))。
然后我们在控制器里编写实现逻辑看看是否引入正确
public function actionDayu(){ $model = new \TopClient(); var_dump($model); }
看到了吧,已经输出了TopClient对象,我们将自带加载器的阿里大鱼引入到Yii内成功。
不composer无autoloader,有PSR-4
如果你不知道什么是PSR-4,那你真该补补了,因为它太太太重要了。
真不知道???那先补补 http://nai8.me/sapper-index.html?topic=30
对于库符合PSR-4编写标准的也比较好破。
我们开始讲,我先模拟一个第三方库,它的目录结构是:
-
abei2017/hello/src/
-
abei2017/hello/src/Hello.php
Hello.php内容是
namespace abei2017\hello;class Hello { public function say(){ echo "hello abei2017"; } }
你看到了,abei2017\hello对应abei2017/hello/src/,此库是符合PSR-4标准的,那么就变的简单了。
我们首先将abei2017文件夹放到vendor下
然后,打开vendor/yiisoft/extensions.php 文件,在里面的数组里增加一项,如下面代码
'abei2017/hello' => array ( 'name' => 'abei2017/hello', 'version' => '0.0.3.0', 'alias' => array ( '@abei2017/hello' => $vendorDir . '/abei2017/hello/src', ), ),
重点是 alisa的设置,代表命名空间到src的映射。
好,我们在控制器里测试一下
namespace app\controllers;use abei2017\hello\Hello;use yii\web\Controller;class Abei2017Controller extends Controller { public function actionIndex(){ $abei = new Hello(); echo $abei->say(); } }
结果你知道的,“hello abei2017”真的出来了。
什么?你不信么?好,你可以将Hello.php文件改成Hello1.php,这样它就不符合PSR-4标准了,然后运行试试,被虐的没话说的你会。Yii果断拒绝了你。
添加在composer里的扩展
有朋友会说,我要用的是composer里的扩展,但是我用不了composer,可不可以从扩展的github上下载源文件下来进行集成那?
必须可以的
composer上的扩展包都是带有加载机制的,可以在composer.json的autoload字段找到其加载形式,有PSR-4、PSR-0的,那么你可以根据上面两条的方法进行安装就可以。
你可以看下的这篇分享了解composer的四种自动加载方式
http://nai8.me/sapper-view.html?id=33
我是扩展 我啥都没有 我是流氓
遇到此类扩展,还等什么,一句inlcude or require 大爱包含所有。
如需转载请注明: 转载自26点的博客
本文链接地址: Yii2手动安装第三方扩展
转载请注明:26点的博客 » Yii2手动安装第三方扩展