【问题标题】:Creating package on Packagist and the package installation path在Packagist上创建包和包安装路径
【发布时间】:2015-03-26 12:24:27
【问题描述】:

我创建了一个 扩展。它是一个 Yii2 小部件。我创建了一个GitHub repository for it。在composer.json 出现一些问题后,我成功地访问了这个Packagist package

现在我可以使用以下命令在任何 yii2 应用程序中使用 composer 安装它:

composer require saidbakr/yii-jui-themes-list=1.2

有一个问题:它已经安装在vendor\saidbakr\yii-jui-themes-list下但是,我希望它直接安装在vendor\saidbakr上,因为我的PHP代码命名空间考虑了这个命名空间。那么有什么方法可以让我控制包的安装位置,或者至少让我的文件直接放在存储库所有者身上?

【问题讨论】:

    标签: yii2 php github composer-php yii2 packagist


    【解决方案1】:

    您的命名空间严重错误。它们不应包含“供应商”。您实际上应该允许软件包安装在它已经安装的确切位置,这正是它应该如何工作的。无论您不让它们安装在其他地方

    如果您想让命名空间更简单,请看这里:https://github.com/Mihai-P/yii2-core/blob/master/composer.json

    我就是这样做的。基本上我告诉作曲家core命名空间实际上是指向vendor/tez/yii2-cms-module

    当你这样说

    use core/widgets/blala 
    

    它会知道去vendor/tez/yii2-cms-module/widgets/blala

    这就是您想要设置的方式。

    你也可以像我在这里一样在 yii2 中设置一个别名:https://github.com/Mihai-P/yii2-app-advanced/blob/master/common/config/bootstrap.php

    【讨论】:

    • 我使用的命名空间怎么可能是错误的,并且在不使用 composer 的情况下它们工作正常。即在名为saidbakr 的供应商下创建一个文件夹,然后将所有文件放在该文件夹中。在这种情况下,视图中的use vendor\saidbakr\JuiThemeSelectWidget 工作正常,我可以使用小部件。
    • 请显示另一个以命名空间“vendor”开头的包。
    • 所有包都应该以供应商开头吗?任何以供应商开头的 Yii2 包? “供应商”中的任何交响乐,项目中以“供应商”开头的任何包。 packagist 上是否有使用 vendor 作为主要命名空间的包?
    • “它有效”并不是正确的理由。如果你有足够的力量,方轮可以工作。
    • 现在看起来不错,更新您的自述文件,您就可以开始摇滚了。
    【解决方案2】:

    你当前的命名空间是这样定义的

    namespace vendor\saidbakr;

    你应该使用类似的东西

    namespace yiiJuiThemesList;

    仅仅因为 composer 会将其放入 vendor 文件夹并不意味着您需要这样的命名空间。

    【讨论】:

    • 好吧,但是如何使用use关键字访问它?
    • 同理,没有vendor。 Composer 的autoload.php 应该会为您处理路径。
    • 在小部件的php文件中,我已经设置了命名空间,但是在视图use yiiJuiThemesList\JuiThemeSelectWidget;导致类未找到错误! @克里斯
    • @sємsєм,你在用Composer's vendor/autoload.php吗?
    • @Chris 我认为我不使用它,因为我对此一无所知!我只是,看看那个文件。它只有 7 行文件,只有两行代码。
    猜你喜欢
    • 1970-01-01
    • 2014-01-24
    • 2012-08-25
    • 2012-02-06
    • 2014-05-30
    • 2011-10-06
    • 1970-01-01
    • 2017-05-07
    • 2018-06-05
    相关资源
    最近更新 更多