我刚刚阅读this post来创建一个能够从任何控制器访问的全局函数。但我不明白它是如何工作的。
我想让任何控制器都可以访问变量'services'。所以,我制作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
。然后我怎么做
任何人都可以提供帮助,我们将不胜感激。
答案 0 :(得分:7)
首先在app
文件中的.php
目录中创建所需的函数
<强> helpers.php 强>
if (!function_exists('getServices')) {
public function getServices() {
return DB::table('services')->get();
}
}
并将此文件包含在composer.json
autoload/files
数组中
<强> composer.json 强>
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/helpers.php"
]
},
然后update the composer
,现在您可以直接在整个项目中使用已创建的函数,因为当应用程序获得引导时文件会自动加载
$result = getServices();
答案 1 :(得分:0)
首先在App目录中创建一个名为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);
}
答案 2 :(得分:0)
如果你想使用任何全局函数,那么你可以创建自己的帮助器类或函数, 然后在autoload中注册该类,这就是你所要做的。 现在,无论你想要什么,你都可以调用该函数
答案 3 :(得分:0)
当我尝试在composer.json中注册我的helpers.php文件时遇到问题。由于我在文件顶部包含一个名称空间,所以我总是遇到函数未定义的错误,但是当删除它时,一切对我来说都是一种魅力。所以要遵循的是以下内容:
创建您的helpers.php文件并将其放置在应用程序或引导目录中。
如果只想使用函数,请确保不包括名称空间。
根据您放置文件的位置,将其包含在composer.json app / helpers.php或bootstrap / helpers.php中。
运行命令composer dump-autoload
现在,您的函数将在您的应用程序中的任何位置全局访问。