进行Yii2扩展时的最佳实践

进行Yii2扩展时的最佳实践,yii2,Yii2,为Yii创建扩展的最佳方法是什么 以下是我迄今为止所做的工作 我希望它可以通过composer安装,所以我为它创建了一个github repo 我在Yii2项目的文件夹vendor/githubname/projectname/中本地保存了这些文件 现在我的问题是:如何向应用程序注册扩展-例如,开始使用myproject.com/myextension,以及如何在扩展中组织视图、控制器和模型 我在谷歌上搜索了一个好的教程,但没有找到任何教程。我也在这一点上,必须自己找到所有的信息。由于这也可能对

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

以下是我迄今为止所做的工作

  • 我希望它可以通过composer安装,所以我为它创建了一个github repo
  • 我在Yii2项目的文件夹
    vendor/githubname/projectname/
    中本地保存了这些文件
  • 现在我的问题是:如何向应用程序注册扩展-例如,开始使用myproject.com/myextension,以及如何在扩展中组织视图、控制器和模型


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

    我也在这一点上,必须自己找到所有的信息。由于这也可能对其他人有所帮助,我将详细记录每个步骤

    1.Github设置 创建一个新的github repo,并确保遵循yii2扩展的命名约定。理想情况下,它们是这样的:

    yourcompany/yii2-yourextension
    
    yourcompany
    是您的github范围,而
    yourextension
    是您的扩展名

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

    composer.json 其中最重要的部分包括:

    • 依赖项(通常是Yii2框架)
    • 自动加载属性,用于声明包的命名空间。yiis autoloader稍后将使用它查找您的类
    完成此操作后,可以运行
    composer update
    这将创建包含所有引用库的供应商文件夹

    下面是我们其中一个扩展的示例:

    请特别注意文件末尾的自动加载块!在这种情况下,这会告诉自动加载程序,
    asinfotrack/yii2/toolbox
    将映射到项目的根文件夹。如果在项目根目录中有一个类为
    MyModel.php
    的文件夹
    models
    ,那么它的名称空间应该是
    asinfotrack/yii2/toolbox/models
    。知道了?这对您的工作扩展至关重要

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

    这也是上述相同扩展的一个示例。您只需复制/粘贴即可:

    Git回购设置 现在是初始化git回购协议的时候了。只需导航到目录并执行命令
    gitinit
    。要添加所有文件并在第一次执行时提交,请执行
    git add-A
    git 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.包装师设置 为了让其他用户能够从其项目中引用您的扩展,您需要向注册

    创建一个帐户并提交您的扩展,如下所述:

    您只需要提供您的reposgithub url。确保遵循yii2的命名约定

    4.连接packagist和github Packagist镜像您的回购协议以供进一步分发。如果跳过此步骤,则每次更新github repo时都必须告诉PackageGist。这可以自动化

    转到github repo的设置并导航到
    Webhooks&Services
    。在这里,您为PackageGist添加了一个新的钩子。github本机支持这一点……您可以在下拉列表中找到PackageGist挂钩

    您需要提供您的PackageGist API令牌,登录到packagist.org后,您可以在帐户页面顶部找到该令牌。所有内容都记录在这里:

    5.结论 已经够了!当您对github执行新的提交时,它将自动镜像到PackageGist。执行
    composer update
    时,只需几分钟的延迟,您就会收到扩展的更新版本

    起初,所有这些看起来都很吓人,也很复杂,但事实上,这是非常直截了当的。如果您还有其他问题,请随时提问。然后我会扩展这个答案


    如果有什么不清楚的地方,只需查看我们其中一个的文件。

    谢谢您的详细解释!我要试一试+不客气!如果你在某个地方有问题,我可能错过了一些东西…只要写我对这个答案的评论,如果是这样…我会立即扩展它!您是否有在github之外使用存储库的经验?在
    “存储库”
    中需要,而不是
    “需要”
    ?你看,我有一个私有的repo(并且必须保持私有),我已经设置了SSH,composer.json是有效的(我知道,因为我一开始有一个错误,现在我没有),但是composer只是说“无需安装或升级”,我的文件夹没有出现在供应商中。没有通过PackageGist加载的回购是否需要另一个文件才能工作?嘿@Jørgen!不是真的…我们在我们公司试过,但在那个时候,它并没有真正与作曲家合作。从那以后,我们再也没有尝试过。我刚刚发现这似乎很直截了当。你是这样试的吗?