Yii2手动安装第三方扩展

PHP 林涛 8004℃ 0评论

对于没有进入composer的扩展,请通通将他们下载到vendor内。通通的。

还是按照目录来

  1. 添加不在composer,但是有自己的autoloader的扩展

  2. 添加不在composer,也没有autoloader的扩展

  3. 添加在composer里的扩展

  4. 啥都没有的

那我们开始吧~

号外

先说说自动安装composer扩展吧,当复习了,这个我想是最简单的了,方法有两个

  1. composer.json内修改,增加我们想要的扩展,然后执行composer install

  2. 在当前程序目录直接命令行 composer required xxxxx

无论各种教程还是官方介绍最多的就是这个了,因此我不在多说,进入到今天的主题?

不composer,有autoloader

这种库也蛮多的,尤其一些已经有些年头有些粉丝的库,他们都有自己的autoloader加载器,今天北哥给你讲讲这种库怎么破!

我们都知道入口文件index.php里有两个自动加载,一个是composer的、一个是自己的。

require(__DIR__ . '/../vendor/autoload.php');require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

你不知道?扒光拖出去,送往东莞。

如果你要加载一个有自动加载器的扩展,那就直接将其加载器放到Yii.php这行上面就成了。

你肯定要问有例子么?北哥会没有么?我们就拿最自大的阿里大鱼来说事吧,它能发短信啥的,不过收费。

Snip20170324_17.png

看到了吧,这货自己有个加载器,太不入群了,没事,我们大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);
}

看看结果
Snip20170324_20.png

看到了吧,已经输出了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

Snip20170324_16.png

然后,打开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手动安装第三方扩展

喜欢 (1)
发表我的评论
取消评论

表情