包:来自多个控制器的调用方法

时间:2016-05-07 14:04:43

标签: php laravel package laravel-5.2 helper

我在我的应用程序中调用多个控制器的方法。我不希望在我的项目中有重复的代码,所以我正在寻找一种方法将方法放在某处,所以我可以从每个控制器调用它。

我做了一些研究,偶然发现了“助手”。 (我不知道这是否是解决这个问题的正确方法。其他方法也是受欢迎的)我已经阅读了this帖子,并且确实完成了Jeffrey Way在帖子中所说的内容,但我仍然得到以下错误:< / p>

  

调用未定义的函数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"
       ]

重要

这是我正在开发的包。

1 个答案:

答案 0 :(得分:0)

要注册您自己的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文件中。