教你如何写一个 Yii2 扩展

技巧库 · forecho · 于 7年前 发布 · 10824 次阅读

前言

把一系列相关联的功能使用模块开发,好处多多,维护起来很方便,模块还可以单独发布出去,让下一个项目之间使用,真是方便。

下面我就写一个开发扩展的简单教程。

Gii

gii 自带帮助我们生成一个基本的扩展文件结构,地址如下: www.xxx.com/gii/extension

先预览一下,成功之后可以点击生成按钮。

然后页面会提示你如何操作。他让我们上传到 GitHub 上去,再开发、使用。但是一般我们一个扩展刚生成,还没写功能,上传到 GitHub 再开发,太麻烦了。

下面我来谈谈我是怎么使用的。

使用

方式一:先在配置文件添加一个别名,代码如下:

<?php
return [

    'components' => [
    ],
    'aliases' => [
        'yiier/rbac' => '@backend/runtime/tmp-extensions/yii2-rbac/src',
    ],

];

只要添加这行就可以使用扩展的命名空间了,就可以愉快的开发了。

同样的道理,如果我们再 GitHub 上看到一个扩展不能用 composer 下载下来怎么办?其实我们可以自己定义一个 vendor 目录,然后给扩展配置一个路径别名就是可以用的。

方式二(推荐) 修改项目的 Composer 文件:

{
  "autoload": {
    "classmap": [
      "backend/runtime/tmp-extensions/yii2-rbac/src/"
    ]
  }
}

然后执行一下 composer dump 命令生效。检查 vendor/composer/autoload_classmap.php 文件可以确认。

注意

按照习惯,我们的扩展一般写在 src 目录下,所以你要手动新建一个 src 文件夹,然后再用 Gii 去生成模块到 src 文件夹里,并且还要改扩展根目录下的 composer.json 文件。

"autoload": {
        "psr-4": {
            // "yiier\\rbac\\": ""  //  原来的
            "yiier\\rbac\\": "src"
        }
    }

下面分享一些优秀的开源模块 https://github.com/forecho/awesome-yii2#module-模块

本文由 forecho 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。


如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。

本帖已被设为精华帖!
共收到 3 条回复 模块开发 Yii 扩展

老大 你还没写完呢~~~

你写的时候,修改 vendor/yiisoft/extendsions.php 文件了么,还有vendor/composer/autoload_psr4.php文件。。

forecho#37年前 0 个赞

@liaorantingyu #2楼 这两个文件都不用修改

4楼 已删除.
5楼 已删除.
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册