我在appLibrary
中创建了一些图书馆服务。我使用AppServiceProvider
使用以下代码绑定该服务:
$this->app->bind('AppLibraryGlobalfunction', function ($app) {
return new Globalfunction();
});
app\Library\Globalfunction.php
<?php
namespace AppLibrary;
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 AppLibraryGlobalfunction;
包含命名空间后,我使用以下代码:
$globalFunction = new Globalfunction();
echo $globalFunction->test('hello');
所有这些代码都工作正常,但我不想在每个文件中添加use AppLibraryGlobalfunction;
,所以无论如何我都可以这样做吗? 是否有任何自动加载文件可以放置它并可以访问Globalfunction
?
为此谷歌解决方案,我尝试了几种解决方案,例如在作曲家中添加此解决方案或创建包等,但它不起作用,所以如果有人有解决此问题的方法,请告诉我。
也许你可以遵循与拉拉维尔相同的方法?
让我举一个如何实现这一目标的例子。
首先,在 app/Helpers.php
中创建一个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 AppLibraryGlobalfunction();
}
}
然后要在任何地方使用它,您可以这样做。
global_function()->test('hello');
这只是一个简单的例子。显然,在实现这一点之前,您必须考虑很多因素。但是,Laravel在提供全局帮助程序函数方面具有类似的方法。例如:
use IlluminateSupportFacadesSession;
// This
echo Session::get('key');
// is the same as
echo session()->get('key');