I have two controller file homecontroller and backendcontroller. What is the best way to create global function and access it from both files?
I found here Arian Acosta's answer helpful but I wonder if there is an easiest way. I would appreciate any suggestions.
Normally, when you create a variable inside a function, that variable is local, and can only be used inside that function. To create a global variable inside a function, you can use the global keyword.
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.
In you app folder create a folder named Helpers and within it create a file name AppHelper or any of your choice
<?php namespace App\Helpers; 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(); } }
When in a controller you can call the various functions
public function index() { //some code //need to debug query \App\Helpers\AppHelper::instance()->startQueryLog(); //some code that executes queries \App\Helpers\AppHelper::instance()->showQueries(); }
Say you were in a blade file, here is how you can call the app blade helper function
some html code {{ \App\Helpers\AppHelper::instance()->bladeHelper($value) }} and then some html code
You can also reduce the overhead of call the complete function namespace \App\Helpers by creating alias for the AppHelper class in config\app.php
'aliases' => [ .... 'AppHelper' => App\Helpers\AppHelper::class ]
and in your controller or your blade file, you can directly call
\AppHelper::instance()->functioName();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With