Laravel 4自定义程序包未出现在autoload_namespace.php中

时间:2014-08-24 10:23:23

标签: php laravel-4 package composer-php

Laravel 4自定义程序包未显示在autoload_namespace.php

我尝试通过在我的一个laravel应用程序中创建一个工作台包来创建一个自定义包,将它提交给github,然后将其安装在另一个包中。我的问题是命名空间映射没有被添加到autoload_namespace.php,并且这就是该行的敲门效果 我的providers数组中的Markfee\Responder\ResponderServiceProvider在运行时会导致以下错误:

php artisan dump-autoload

错误输出:

PHP Fatal error: Class 'Markfee\Responder\ResponderServiceProvider' not found in /media/sf_wwwshare/feenance/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php on line 157

该软件包可在以下网址找到:

https://github.com/markfee/responder.git

我在我的composer.json文件中包含了包含以下条目的包

"repositories": {
  "responder": {
    "type": "package",
    "package": {
      "name": "markfee/responder",
      "description": "Simple responder class for responding with json from api",
      "version": "0.1.0",
      "source": {
        "type": "git",
        "url": "https://github.com/markfee/responder.git",
        "reference": "a7a24c82479fc01ec0c06833690bfd2eeee9e47d"
      }
    }
  }
},
"require": {
  "laravel/framework": "4.2.*",
  "markfee/responder": "0.1.*"
},

如果有人可以放任何光,我会非常感激。如果您需要任何进一步的细节,请询问。

2 个答案:

答案 0 :(得分:1)

通过为该存储库提供包定义,您采用了复杂的方法。如果你这样做,这个包是该存储库中任何composer.json的完全替代,只有在没有的情况下才能使用。

您没有将自动加载定义添加到该程序包中,因此在自动加载中正确丢失了。

建议:避免在您自己的type:package文件中使用composer.json。如果存储库已有type:vcs,则只需使用composer.json

如果要像标记版本一样使用主分支,可以在require语句中添加别名:"markfee/responder": "dev-master as 0.1.0"。您也可以克隆该repo并在您自己的本地副本中标记您想要的提交,并引用您自己的repo。或者尝试说服维护者标记版本并将其回购添加到packagist.org

答案 1 :(得分:0)

在Sven的帮助下我得到了这个工作,我所做的确切更改是用以下内容替换我的composer.json中的原始条目。我没有使用别名,因为我现在只想包含主分支。版本控制和添加到packagist是我的下一个任务:

"repositories": {
  "responder": {
    "type": "vcs",
    "url": "https://github.com/markfee/responder.git"
  }
},
"require": {
  "laravel/framework": "4.2.*",
  "markfee/responder": "dev-master"
},