【问题标题】:Laravel custom package helper autoloadLaravel 自定义包助手自动加载
【发布时间】:2017-11-09 18:58:14
【问题描述】:

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

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

它位于我的包文件夹中,就在包服务提供商附近。 服务提供者本身加载成功,但帮助文件加载不成功。我在包的 composer.json 中添加了以下行“自动加载”部分,就像我在其他包中看到的那样:

"files": [
        "src/helpers.php"
    ]

然后我放弃了自动加载。一切正常,但这个 t() 函数。没有找到。我做错了什么?

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

更新 包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

【问题讨论】:

  • 确保你的路径是正确的。
  • 正确。因为它在 laravelcollective/html 包中:` "autoload": { "psr-4": { "Collective\\Html\\": "src/" }, "files": [ "src/helpers.php" ] }`
  • 您能否发布完整的composer.json 文件和文件结构?

标签: php laravel


【解决方案1】:

我的包裹

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

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

相关:

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 那不是很好,它像一个包中的数百个 laravel 包一样安装...
    猜你喜欢
    • 2017-01-11
    • 1970-01-01
    • 2013-06-18
    • 2018-11-21
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    相关资源
    最近更新 更多