找不到Laravel软件包特征

eComEvo

我正在开发一个程序包,并在我的PSR-4结构中添加了一个“ Traits”目录,这反映在该程序包的composer.json中。

{
    "name": "my-private-repo/prefs",
    "description": "Preferences package.",
    "type": "package",
    "keywords": [
        "prefs",
        "preferences"
    ],
    "require": {
        "php": ">=5.5.9",
        "illuminate/support": "5.2.*",
        "laravelcollective/html": "5.2.*",
        "anahkiasen/former": "~4"
    },
    "autoload": {
        "classmap": [
            "src/controllers",
            "src/models"
        ],
        "psr-4": {
            "MyPrivateRepo\\Prefs\\": "src/"
        },
        "files": [
            "src/Prefs/helpers.php"
        ]
    },
    "minimum-stability": "dev",
    "prefer-stable": true
}

在该src/目录是这样的结构:

Prefs/
    Traits/
        HasPrefs.php
    Prefs.php
    PrefsServiceProvider.php
    helpers.php

以下是内容HasPrefs.php

namespace MyPrivateRepo\Prefs\Traits;

use MyPrivateRepo\Prefs\Prefs;

trait HasPrefs
{
    public function prefs($key = null, $value = null)
    {
        //...do pref related stuff here...
    }
}

我已经加载了私有项目,Prefs直接调用该类时,一切工作都很好然后,我决定测试将HasPrefs特质添加到我的User模型中:

namespace App;

use Cartalyst\Sentinel\Users\EloquentUser;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Auth\Authenticatable;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use MyPrivateRepo\Prefs\Traits\HasPrefs;

class User extends EloquentUser implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract
{
    use SoftDeletes,
        Authenticatable,
        Authorizable,
        HasPrefs,
        CanResetPassword;

    //...do lots of user related stuff here...
}

现在,每次尝试执行任何操作时,都会收到以下错误消息:

[Symfony\Component\Debug\Exception\FatalErrorException]
Trait 'MyPrivateRepo\Prefs\Traits\HasPrefs' not found

然后我做到composer update了,但是到达运行的脚本部分时遇到了与上面相同的错误php artisan optimize

我注释掉了对HasPrefsin的引用User然后重新运行artisan optimize,但没有任何问题。

取消注释HasPrefs和所有正在工作,没有错误预期......接下来的时间,我需要运行,直到composer update该项目的一次。然后,我回到必须HasPrefs再次注释掉引用并手动运行的位置artisan optimize

鉴于这是需要部署到生产服务器的内容,因此我不能在每次有自动部署composer updatecomposer install由自动部署触发时手动编辑使用此特征的每个文件

我尝试了以下方法来解决此问题,但未成功:

  • 工匠清除缓存
  • 作曲家自我更新
  • 作曲家清除&&作曲家更新-o
  • 再次注释掉HasPrefs之后:artisan清晰编译&& artisan优化
  • rm composer.lock && composer更新-o
  • rm -rf供应商/ * &&作曲家安装

composer update如果上述任何一项临时解决了此问题,则只需一个电话即可将其重新打断。

有什么主意在这里吗?

菲利普·科布朗斯基

如您在这里看到的:

"psr-4": {
    "MyPrivateRepo\\Prefs\\": "src/"
},

您将srcdir指向MyPrivateRepo\Prefs命名空间。因此,当您想在名为dir的目录中使用此特征时,Traits名称空间应如下所示:

MyPrivateRepo\Prefs\Prefs\Traits

因为您还有一个Prefs,所以您use在此特征中声明将如下所示:

 use MyPrivateRepo\Prefs\Prefs\Prefs;

我的建议是将作曲家的条目更改为:

"psr-4": {
    "MyPrivateRepo\\": "src/"
},

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Spring Boot项目构建失败-找不到软件包

来自分类常见问题

pip install pygraphviz:找不到软件包“ libcgraph”

来自分类Dev

R即使在安装软件包后也找不到软件包

来自分类Dev

转到-找不到软件包“ appengine”

来自分类Dev

作曲者:找不到所请求的PEAR软件包

来自分类Dev

找不到JavaFX软件包

来自分类Dev

找不到pypi中的软件包

来自分类Dev

成功安装软件包后找不到Python软件包

来自分类Dev

CMake找不到CxxTest软件包

来自分类Dev

找不到Acra lib软件包

来自分类Dev

packagist laravel package -composer找不到软件包

来自分类Dev

PyCharm在virtualenv中找不到软件包

来自分类Dev

找不到软件包“ libxml-2.0”

来自分类Dev

安装软件包:找不到软件包“ Microsoft.AspNet.WebApi.Cors”

来自分类Dev

找不到软件包“ cairo”

来自分类Dev

找不到Tensorflow软件包

来自分类Dev

问题:找不到软件包“ libcrypto”

来自分类Dev

找不到软件包“ cairo”

来自分类Dev

R即使在安装软件包后也找不到软件包

来自分类Dev

找不到或安装软件包“自由”

来自分类Dev

找不到软件包vesta,vesta-nginx和vesta-php的软件包

来自分类Dev

找不到软件包gdebi

来自分类Dev

找不到软件包“ ncurses”

来自分类Dev

找不到刚刚安装的软件包

来自分类Dev

找不到pypi中的软件包

来自分类Dev

成功安装软件包后找不到Python软件包

来自分类Dev

FreeBSD 10.2找不到软件包

来自分类Dev

Laravel 5软件包,找不到类

来自分类Dev

OS X软件包安装问题:找不到gfortran 4.8来构建软件包