制作Yii2扩展时的最佳做法

时间:2015-09-12 23:55:38

标签: yii2

为Yii创建扩展程序的最佳方法是什么?

这是我到目前为止所做的事情

  1. 我希望它可以通过composer安装,所以我为它创建了一个github repo。
  2. 我在Yii2项目的文件夹vendor/githubname/projectname/中本地拥有文件
  3. 现在我的问题是:如何在应用程序中注册扩展程序 - 例如。开始研究myproject.com/myextension,我如何组织扩展中的视图,控制器和模型?

    我已经用Google搜索了一个很好的教程,但我还没找到。

1 个答案:

答案 0 :(得分:2)

我一直站在同一点,不得不自己找到所有的信息。因为这也可以帮助其他人,我将详细记录每一步。

1。 Github设置

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

yourcompany/yii2-yourextension

yourcompany是您的github范围,yourextension是您的扩展名。

2。本地项目设置

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

composer.json

其中最重要的部分是:

  • 依赖项(通常是Yii2框架)
  • autoload-property,它声明了包的命名空间。稍后将由yiis-autoloader用于查找您的课程。

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

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

特别注意文件末尾的自动加载块!在这种情况下,这告诉自动装带器asinfotrack/yii2/toolbox将映射到项目的根文件夹。如果项目根目录中包含类models的文件夹MyModel.php,则应该具有名称空间asinfotrack/yii2/toolbox/models。得到它了?这对您的工作延期至关重要!

的.gitignore

您要创建的下一个文件是.gitignore - 文件。在那里你排除vendor-folder和所有IDE特定的文件。

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

GIT中-回购设置

现在是时候初始化git-repo了。只需导航到目录并执行命令git init。要首次添加所有文件并提交,请执行git add -Agit commit -m "your message here"。您现在已准备好将您的仓库推送到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镜像您的回购以进一步分发。如果您跳过此步骤,则每次更新github-repo时都必须告诉packagist。这可以自动化!

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

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

https://packagist.org/about

5。结论

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

起初所有这些看起来都很恐怖和复杂,但实际上它非常直接。如果您还有其他问题,请随时提出。然后我会扩展这个答案。

如果问题不明确,只需查看我们extensions之一的文件。