php 如何在Laravel 5的每个控制器中创建一个自定义帮助函数

dsf9zpds  于 12个月前  发布在  PHP
关注(0)|答案(4)|浏览(76)

此问题已在此处有答案

How to create custom helper functions in Laravel(23答案)
11个月前关闭。
我只是读取this post来创建一个全局函数,可以从任何控制器访问。但我不明白这是怎么回事。
我想使变量'服务'从任何控制器访问。所以,我创建了General.php并将其放入app/Http中。这是密码。

<?php
class General {

   public function getServices() {
      $services = "SELECT * FROM products";
      return $services;
   }
}

在控制器中我包括了它

<?php
namespace App\Http\Controllers;

use App\Http\General;
use Illuminate\Http\Request;

class HomeController extends Controller {
   public function index() {

       $title = 'Our services';
       $services = General::getServices();

       return view('welcome',  compact('title','services'));

   }
}

当我运行它时,我得到了错误Class 'App\Http\General' not found。然后我能帮上忙的人都很感激.

vaj7vani

vaj7vani1#

首先在.php文件的app目录中创建所需的函数,如下所示:

helpers.php

if (!function_exists('getServices')) {
    public function getServices() {
        return DB::table('services')->get();
    }
}

并将此文件包含在autoload/files数组中的composer.json中,作为

composer.json

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/"
    },
    "files": [
        "app/helpers.php"
    ]
},

然后是update the composer,现在您可以直接在整个项目中使用创建的函数,因为当应用程序引导时,文件会自动加载

$result = getServices();
ql3eal8s

ql3eal8s2#

首先,在app目录中创建一个General文件,名为General.php

<?php 
namespace App;
use Illuminate\Http\Request;

class General {

public function __construct()
{

}

public function getServices() {
  $services = "SELECT * FROM users";

  return $services;
}
}

然后在Controller中调用这个调用

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\General;

class HomeController extends Controller {

    $general = new General();
    $services = $general->getServices();
    dd($services);

}
igsr9ssn

igsr9ssn3#

如果您想使用任何全局函数,那么您可以创建自己助手classfunction,然后在autoload中注册该类,这就是您所要做的。现在,无论你想在哪里,你都可以调用那个函数

2g32fytz

2g32fytz4#

当我试图在composer.json中注册我的helpers.php文件时遇到了问题。我总是得到函数未定义的错误,因为我在文件的顶部包含了一个名称空间,但是当删除它时,一切都像我的魅力。那么接下来要做的是:
1.创建helpers.php文件并将其放置在app或bootstrap目录中。
1.如果你只想使用你的函数,请确保不要包含namespace。
1.包含在composer.json app/helpers.php或bootstrap/helpers.php中,具体取决于文件的放置位置。
1.运行命令composer dump-autoload
1.现在,您的功能将在您的应用程序中的任何地方进行全局访问。

相关问题