我在app\Library
中创建了一些图书馆服务。我使用AppServiceProvider
使用以下代码来绑定该服务:
$this->app->bind('App\Library\Globalfunction', function ($app) {
return new Globalfunction();
});
app \ Library \ Globalfunction.php
<?php
namespace App\Library;
class Globalfunction {
protected $_ci;
public $siteConfig=array();
public $smtpConfig=array();
public $socialConfig=array();
public $paramConfig;
public $paramFrom;
public function test($param) {
return $param;
}
}
?>
要在控制器中使用此test(),我要使用以下内容包括名称空间:
use App\Library\Globalfunction;
包含名称空间一次,我使用以下代码:
$globalFunction = new Globalfunction();
echo $globalFunction->test('hello');
所有这些代码都可以正常工作,但是我不想在每个文件中添加use App\Library\Globalfunction;
,所以我可以这样做吗?我可以放置任何自动加载文件并且可以访问Globalfunction
吗?
我为此使用了google解决方案,我尝试了几种解决方案,例如在composer中添加此文件或创建包等,但是它无法正常工作,因此,如果有人对此问题有解决方案,请告诉我。
答案 0 :(得分:1)
也许您可以采用与Laravel相同的方法?
让我为您提供一个有关如何实现此目标的示例。
首先,在Helpers.php
中创建一个app/Helpers.php
文件。
您还需要自动加载。
"autoload": {
"classmap": [
"database/seeds",
"database/factories",
"database/providers"
],
"files": [
"app/Helpers.php"
],
"psr-4": {
"App\\": "app/"
}
}
完成后,您可以在新近自动加载的Helpers.php
中定义一个函数:
if(! function_exists('global_function')) {
function global_function()
{
return new \App\Library\Globalfunction();
}
}
然后在任何地方使用它,您都可以这样做。
global_function()->test('hello');
这只是一个简单的例子。显然,在执行此操作之前,您需要考虑很多因素。 但是,Laravel具有提供全局助手功能的类似方法。例如:
use Illuminate\Support\Facades\Session;
// This
echo Session::get('key');
// is the same as
echo session()->get('key');