Php 包:从多个控制器调用方法
我正在从应用程序中的多个控制器调用一个方法。我不想在我的项目中有重复的代码,所以我正在寻找一种方法将该方法放在某个地方,这样我就可以从每个控制器调用它 我做了一些研究,偶然发现了“助手”。(我不知道这是否是解决这个问题的正确方法。其他方法也很受欢迎)我已经阅读了这篇文章,并完全按照杰弗里·韦(Jeffrey way)在文章中所说的做了,但我仍然发现以下错误: 调用未定义的函数initFb() 我已经尝试了Php 包:从多个控制器调用方法,php,laravel,package,laravel-5.2,helper,Php,Laravel,Package,Laravel 5.2,Helper,我正在从应用程序中的多个控制器调用一个方法。我不想在我的项目中有重复的代码,所以我正在寻找一种方法将该方法放在某个地方,这样我就可以从每个控制器调用它 我做了一些研究,偶然发现了“助手”。(我不知道这是否是解决这个问题的正确方法。其他方法也很受欢迎)我已经阅读了这篇文章,并完全按照杰弗里·韦(Jeffrey way)在文章中所说的做了,但我仍然发现以下错误: 调用未定义的函数initFb() 我已经尝试了composer dump autoload 这是我的helpers.php: <?p
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;
}
}
重要
这是我正在开发的一个包。要注册自己的
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
文件中。要注册您自己的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
文件中。您是否将这些行添加到了Laravel的composer.json
?哦,对不起。你是说它应该在主应用程序的composer.json中?是的。试着把这些行放到应用程序的composer.json
噢,这背后的逻辑是什么?我想这不应该是我的包的用户必须做的事情,所以我把它放在composer.json中?是否有一种方法可以让包的用户不必自己做这件事?双重检查路径。另外,尝试手动删除自动加载文件,然后运行composer dumpauto
来生成它们。您是否将这些行添加到Laravel的composer.json
?哦,对不起。你是说它应该在主应用程序的composer.json中?是的。试着把这些行放到应用程序的composer.json
噢,这背后的逻辑是什么?我想这不应该是我的包的用户必须做的事情,所以我把它放在composer.json中?是否有一种方法可以让包的用户不必自己做这件事?双重检查路径。另外,尝试手动删除自动加载文件,然后运行composer dumpauto
生成它们。