如何在自己的laravel包中添加助手?(调用未定义的函数)



在我的composer.json中,我写了:

"autoload": {
"psr-4": {
"Pmochine\MyOwnPackage\": "src/"
},
"files": [
"src/helpers.php"
]
},

但不知何故,即使在composer转储自动加载之后,函数也不会加载。我得到"对未定义函数的调用"。为了创建包,我使用了一个包生成器。也许它在供应商文件夹中创建了一个符号链接?

内部助手我写了

<?php
if (! function_exists('myowntest')) {
function myowntest()
{ 
return 'test'; 
}
}

在包服务提供商中,尝试添加以下内容:

// if 'src/helpers.php' does not work, try with 'helpers.php'
if (file_exists($file = app_path('src/helpers.php'))) { 
require $file;
}

您所做的是最佳实践,应该有效。我以barryvdh/laravel-debugbar中的composer.json为例。https://github.com/barryvdh/laravel-debugbar/blob/master/composer.json

"name": "barryvdh/laravel-debugbar",
"description": "PHP Debugbar integration for Laravel",
"keywords": ["laravel", "debugbar", "profiler", "debug", "webprofiler"],
"license": "MIT",
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"require": {
"php": ">=5.5.9",
"illuminate/support": "5.1.*|5.2.*|5.3.*|5.4.*|5.5.*",
"symfony/finder": "~2.7|~3.0",
"maximebf/debugbar": "~1.13.0"
},
"autoload": {
"psr-4": {
"Barryvdh\Debugbar\": "src/"
},
"files": [
"src/helpers.php"
]
}
}

我的猜测是,您不需要在主composer.json中以正确的方式使用自己的包吗?

只需要调用您的主项目

composer update you/your-package

唯一对我有用的是运行composer remove <vendor>/<package>并要求它再次返回。否则会忽略文件部分。

这似乎是在本地开发包并对composer.json文件进行更改时发生的。

最新更新