为 Yii 创建扩展的最佳方式是什么?
这是我到目前为止所做的
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
其中最重要的部分是:
完成此操作后,您可以运行
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/