Laravel(5.2)中是否有任何方法可以在自定义对象中调用静态和/或非静态函数,而无需在使用它的所有类中实例化引用对象?
示例:我的课程App\Helpers\Utilities.php
包含公共职能doBeforeTask()
我在我的项目中的所有类中使用此方法,如果我可以在不创建我的Utilities对象{{1}的实例的情况下调用Utilities::doBeforeTask()
或Utilities->doBeforeTask()
,那将是非常好的。 }}
答案 0 :(得分:5)
将您的方法定义为静态方法。并使用以下代码在任何地方调用它:
Utilities::doBeforeTask();
文件的代码结构 App \ Helpers \ Utilities.php
namespace App\Library;
class Utilities {
//added new user
public static function doBeforeTask() {
// ... you business logic.
}
}
答案 1 :(得分:2)
将您的方法定义为静态方法。随处叫
让我们举个例子
namespace App\Http\Utility;
class ClassName{
public static function methodName(){
// ... you business logic.
}
}
您要使用的位置指定名称空间
像这样:
use App\Http\Utility\ClassName;
ClassName::methodName();
别忘了运行
composer dump-autoload
答案 2 :(得分:1)
如果您不能将其更改为静态方法(即,这是供应商文件),则可以在PHP> = 5.4中进行操作
$something = (new Something)->foo("bar");
答案 3 :(得分:0)
定义静态函数
class Foo
{
public static function staticFunction() {
return 'Hello World';
}
}
现在调用Foo :: staticFunction()
答案 4 :(得分:0)
Laravel也有Facade实现,这可能是TS想到的。这些Facade基本上可以为您做所有事情,而且很可能还会解决“供应商文件”问题。
https://www.larashout.com/creating-custom-facades-in-laravel
基本上,您必须提供它的一个实例并将您的外观指向它,这反过来又是您注册的别名。一切都在上面的网址中说明。