【问题标题】:Yii2 - extension structuresYii2 - 扩展结构
【发布时间】:2017-09-01 04:46:28
【问题描述】:

最近我在 Yii2 应用程序中添加了一个电报机器人扩展来使用它。但实际上它不是 Yii2 扩展,而是普通的 php 命名空间结构化文件和类。

这个电报分机的名称是irazasyed/telegram-bot-sdk,实际上它是添加到我的composer.json 的名称。我想知道如何制作一些类似这个扩展的类?

irazasyed/telegram-bot-sdk 结构是这样的:

vandor >>
    irazasyed
        telegram-bot-sdk
            composer.json
            license
            src
                class1.php
                class2.php

并且可以从我的应用程序中的任何控制器从\Telegram\Bot\Api 等命名空间访问类文件。

我想知道如何自己制作这样的东西。 我想要这个结构:

vendor >>
    myCustomName
        myCustomPakageName
            composer.json
            license
            src
                Class1.php
                Class2.php

并从此命名空间\something\somethingElse\Class1;访问类文件

我该怎么做?

【问题讨论】:

标签: php yii2 composer-php yii2-extension


【解决方案1】:

只需将您的文件添加到项目文件夹中的一个(或多个文件夹)中,并使用建议的根命名空间。您不需要 composer.json,因为您不需要使用 composer 安装它。而且你不应该把它放在vendor文件夹中。

基本项目模板示例: - 将所有内容放在应用程序根文件夹中的myCustomName 文件夹中, - 为每个类设置命名空间,例如 app\myCustomName(+ 您正在使用的任何子文件夹)

高级项目模板示例: - 将所有内容放在所选应用程序根文件夹中的myCustomName 文件夹中(如frontendcommon), - 为每个类设置命名空间,例如 frontend\myCustomName(或 common 而不是 frontend 或其他任何 + 您正在使用的任何子文件夹)

【讨论】:

  • 其实目前我自己也在使用这种方法。我想在名称中没有 \frontend\ 部分的情况下这样做。可能吗?假设我在后端控制器中,而 myCustom 文件夹在前端,所以我应该使用 \frontend\myCustom+... 但我想使用类似于我在问题中所说的命名空间。
  • 在这种情况下,您需要为自动加载器注册根命名空间。其中一种解决方案可以是found in my other answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2015-01-29
  • 2012-03-30
  • 2018-03-03
  • 1970-01-01
  • 2014-11-24
相关资源
最近更新 更多