Laravel,作曲家:文件自动加载不起作用

时间:2017-07-22 09:17:34

标签: php laravel composer-php

我使用Laravel 5.4并希望使用帮助函数自动加载helpers.php文件,我想在我的项目中使用它(特别是在我的控制器中)。

我的composer.json看起来像这样:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.6.4",
        "laravel/framework": "5.4.*",
        "laravel/tinker": "~1.0"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~5.7"
    },
    "autoload": {
        "files": [
            "app/Http/helpers.php"
        ],
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "files": [
            "app/Http/helpers.php"
        ],
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    }
}

我的helpers.php看起来像:

<?php
namespace App\Http;

function combineColumnNameType($columnLabels, $columnTypes) {
    $combined = [];
    // logic
    return $combined;
}

我的问题是,当我尝试在我的一个控制器中使用helpers.php的函数时,它会抛出以下错误消息:

Call to undefined function App\Http\Controllers\combineColumnNameType()

我曾尝试composer dump-autoload几次,但没有帮助。

我也试过composer update

有什么问题?

1 个答案:

答案 0 :(得分:1)

composer.json看起来很好,但看起来你使用帮助器错了。辅助函数应该是一个简单的函数,如下所示:

if (! function_exists('myCustomHelper')) {
    function myCustomHelper()
    {
        return 'Hey, it\'s working!';
    }
}

您应该使用myCustomHelper()而不是$this->myCustomHelper()来调用它。

<强>更新

helpers.php不应该有namespace或类定义。​​