yii2 - 制作 Yii2 扩展时的最佳实践

标签 yii2

为 Yii 创建扩展的最佳方式是什么?

这是我到目前为止所做的

  • 我希望它可以通过 composer 安装,所以我为它创建了一个 github repo。
  • 我在文件夹 vendor/githubname/projectname/ 中有本地文件在我的 Yii2 项目中

  • 现在我的问题是:我如何在应用程序中注册扩展 - 例如。开始在 myproject.com/myextension 上工作,我如何在扩展中组织 View 、 Controller 和模型?

    我用谷歌搜索了一个很好的教程,但我没有找到任何教程。

    最佳答案

    我一直处于同一点,不得不自己找到所有信息。由于这也可能对其他人有所帮助,因此我将详细记录每个步骤。

    1. Github 设置

    创建一个新的 github 存储库并确保遵循 yii2-extensions 的命名约定。理想情况下,它们是这样的:

    yourcompany/yii2-yourextension
    
    yourcompany成为你的 github 范围和 yourextension您的扩展名。

    2.本地项目设置

    创建一个本地文件夹,您将在其中开发您的扩展。您首先在其中创建的一个文件是 composer.json .此文件夹不应位于现有项目的供应商文件夹中!无论如何它都不会工作,除非你在 autoload.php 中声明了你的命名空间。您周围的项目手动。

    Composer .json

    其中最重要的部分是:
  • 依赖项(通常是 Yii2 框架)
  • 为你的包声明命名空间的 autoload-property。稍后 yiis-autoloader 将使用它来查找您的类。

  • 完成此操作后,您可以运行 composer update这将创建包含所有引用库的供应商文件夹。

    这是我们的扩展之一的示例:
    https://github.com/asinfotrack/yii2-toolbox/blob/master/composer.json

    特别注意文件末尾的自动加载 block !在这种情况下,这会告诉自动加载器 asinfotrack/yii2/toolbox将映射到项目的根文件夹。如果你有一个文件夹 models与类(class) MyModel.php在您的项目根目录中,它应该具有命名空间 asinfotrack/yii2/toolbox/models .知道了?这对于您的扩展工作至关重要!

    .gitignore

    您将创建的下一个文件是 .gitignore -文件。在那里,您排除了供应商文件夹和所有特定于 IDE 的文件。

    也是上述相同扩展的示例。您可以简单地复制/粘贴它:
    https://github.com/asinfotrack/yii2-toolbox/blob/master/.gitignore

    Git-repo-设置

    现在是时候初始化 git-repo 了。只需导航到目录并执行命令 git init .首次执行 git add -A 添加所有文件并提交和 git commit -m "your message here" .您现在已准备好将您的 repo 推送到 github。

    您需要将 repo 的远程设置为 github。这是通过以下命令完成的:
    git remote add origin https://github.com/youraccount/yourrepo.git
    

    还要确保正确设置了以下配置变量:
    git config user.email
    git config user.name
    

    至少电子邮件应该与您的 github 帐户匹配。如果要更改值,只需将它们附加到上面的命令中。像这样:
    git config user.email "my-mail@my-domain.com"
    

    您现在已准备好将您的扩展推送到 github:
    git push origin master
    

    3.Packagist-设置

    为了让其他用户能够在他们的项目中引用您的扩展,您需要向 packagist.org 注册它。 .

    按照此处的说明创建一个帐户并提交您的扩展程序:
    https://packagist.org/packages/submit

    你只需要提供你的 repos github-url。确保遵循 yii2 的命名约定。

    4.连接packagist和github

    Packagist 镜像您的 repo 以供进一步分发。如果你跳过这一步,你必须在每次更新你的 github-repo 时告诉 packagist。这可以自动化!

    转到您的 github-repo 的设置并导航到 Webhooks & Services .在那里你为 packagist 添加了一个新的钩子(Hook)。这是由 github 原生支持的……你可以在下拉列表中找到 packagist-hook。

    您需要提供您的 packagist-API-Token,您可以在登录到 packagist.org 时在您的帐户页面顶部找到它。一切都在这里记录得很好:

    https://packagist.org/about

    5. 结论

    就是这样!当您对 github 执行新的提交时,它将自动镜像到 packagist。当您执行 composer update 时,您将延迟几分钟收到扩展的更新版本。 .

    起初,所有这些可能看起来令人生畏和复杂,但实际上它非常简单。如果您还有其他问题,请随时提问。然后我将扩展这个答案。

    如果有不清楚的地方,只需查看我们的 extensions 之一的文件即可。 .

    关于yii2 - 制作 Yii2 扩展时的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32544956/

    相关文章:

    php - 如何使用 composer 在 Windows 中安装 Yii2 Alpha

    ActiveForm 和 GridView 上的 Yii2 Pjax [让它工作起来]

    solr - yii2 Composer 更新 fatal error

    php - 如何在 joinWith() yii2 中获取基表列

    php - Yii2 在运行时将模型添加到 hasMany 关系中

    php - Yii2:无法执行应用程序。 Apache 显示 "Index of"

    javascript - 从 Yii2 表单字段调用 JavaScript 函数

    yii - 在 DetailView 中过滤空值

    php - 如何在数组助手 Yii2 中设置值?

    php - 为什么在 Controller init() 方法中 Yii2 用户身份为空?