Laravel自定义包助手自动加载

时间:2017-06-08 07:29:32

标签: php laravel

我正在为我的需求开发一个定制的laravel包,并发现了一个奇怪的问题。我的包应该使用名为t()的自定义辅助函数。

function t($string, array $options = [])
{
    // Function code goes here
}

它位于我的包文件夹中,靠近包服务提供商。 服务提供程序本身加载成功,但辅助文件不是。我添加了以下几行" autoload"正如我在其他包中看到的那样,包的部分是composer.json:

"files": [
        "src/helpers.php"
    ]
然后我抛弃了自动加载。一切正常,但这个t()函数。它没找到。我做错了什么?

P.S。:当然,我可以使用require_once将它包含在包服务提供程序中,但无论哪种方式都是composer?)

更新 package composer.json:

{
  "name": "astatroth/laravel-i18n",
   "require": {
     "astatroth/laravel-config": "^1.0"
    },
  "license": "MIT",
  "authors": [
    {
      "name": ".......",
      "email": "........"
    },
    {
      "name": ".......",
      "email": "........"
    }
  ],
  "autoload": {
    "psr-4": {
      "Astatroth\\LaravelI18n\\": "src/"
    },
    "files": [
      "src/helpers.php"
    ]
  },
  "minimum-stability": "dev"
}

包文件结构:

laravel-i18n
  config
  src
    I18nServiceProvider.php
    helpers.php
  composer.json

2 个答案:

答案 0 :(得分:0)

  

我的包裹

设计包或库不支持 Composer 配置文件,换句话说,永远不会读取包文件夹中的composer.json文件。

要解决此问题,请在需要来源时使用vcs类型而不是package

相关:

答案 1 :(得分:0)

如果您使用存储库符号链接将您的包添加到laravel项目,请运行composer update。我遇到了同样的问题,运行composer dump-autload并不起作用,因为您的供应商文件夹未使用新文件进行更新。 希望这可以解决您的问题。