我使用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
。
有什么问题?
答案 0 :(得分:1)
composer.json
看起来很好,但看起来你使用帮助器错了。辅助函数应该是一个简单的函数,如下所示:
if (! function_exists('myCustomHelper')) {
function myCustomHelper()
{
return 'Hey, it\'s working!';
}
}
您应该使用myCustomHelper()
而不是$this->myCustomHelper()
来调用它。
<强>更新强>
helpers.php
不应该有namespace
或类定义。