Solution
One way to do this is to create a class and use its instance, this way you can not only access the object of the class within a controller, blade, or any other class as well.
AppHelper file
In you app folder create a folder named Helpers and within it create a file name AppHelper or any of your choice
<?php
namespace AppHelpers;
class AppHelper
{
public function bladeHelper($someValue)
{
return "increment $someValue";
}
public function startQueryLog()
{
DB::enableQueryLog();
}
public function showQueries()
{
dd(DB::getQueryLog());
}
public static function instance()
{
return new AppHelper();
}
}
Usage
In a controller
When in a controller you can call the various functions
public function index()
{
//some code
//need to debug query
AppHelpersAppHelper::instance()->startQueryLog();
//some code that executes queries
AppHelpersAppHelper::instance()->showQueries();
}
In a blade file
Say you were in a blade file, here is how you can call the app blade helper function
some html code
{{ AppHelpersAppHelper::instance()->bladeHelper($value) }}
and then some html code
Reduce the overhead of namespace (Optional)
You can also reduce the overhead of call the complete function namespace AppHelpers by creating alias for the AppHelper class in configapp.php
'aliases' => [
....
'AppHelper' => AppHelpersAppHelper::class
]
and in your controller or your blade file, you can directly call
AppHelper::instance()->functioName();
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…