我正在从应用程序中的多个控制器调用一个方法。我不想在我的项目中有重复的代码,所以我正在寻找一种将方法放在某个地方的方法,这样我就可以从每个控制器调用它。
我做了一些研究,偶然发现了"帮助者"。(我不知道这是否是解决这个问题的正确方法。也欢迎其他方法)我读过这篇文章,并按照Jeffrey way在他的帖子中所说的做了,但我仍然得到以下错误:
调用未定义的函数initFb()
我试过composer dump-autoload
。
这就是我的helpers.php
:
<?php
if (! function_exists('initFb'))
{
function initFb()
{
$fb = new 'Facebook'Facebook([
'app_id' => getenv('FACEBOOK_APP_ID'),
'app_secret' => getenv('FACEBOOK_APP_SECRET'),
'default_graph_version' => 'v2.5',
]);
return $fb;
}
}
我的包的composer.json:
"files": [
"src/helpers.php"
]
重要
这是我正在开发的一个软件包。
要注册自己的helpers.php
文件,请将这些行添加到Laravel的composer.json
:中
"autoload": {
...
"files": [
"app/some_path/helpers.php"
]
对于类,使用psr-4
部分:
"psr-4": {
"App''": "app/",
"YourName''PackageNamespace''": "packages/yourname/package-name/src"
},
然后运行composer dumpauto
(如果没有帮助,请尝试composer dumpauto -o
)。
另外,试着用一些简单的助手来测试它是否有效,做这样的事情:
if (! function_exists('helpersTest'))
{
function helpersTest()
{
return 'It works!';
}
}
如果您在使用composer
(来自Packagist
)安装软件包后尝试使用这些帮助程序,则应该将这些行添加到软件包的composer.json
文件中。