我正在为我的需求开发一个定制的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
答案 0 :(得分:0)
我的包裹
设计包或库不支持 Composer 配置文件,换句话说,永远不会读取包文件夹中的composer.json
文件。
要解决此问题,请在需要来源时使用vcs
类型而不是package
。
相关:
答案 1 :(得分:0)
如果您使用存储库符号链接将您的包添加到laravel项目,请运行composer update
。我遇到了同样的问题,运行composer dump-autload
并不起作用,因为您的供应商文件夹未使用新文件进行更新。
希望这可以解决您的问题。