web-dev-qa-db-ja.com

Laravel-オブジェクトをインスタンス化せずに静的関数を呼び出す方法

Laravel(5.2)で、使用されているすべてのクラスで参照オブジェクトをインスタンス化せずに、カスタムオブジェクトで静的関数や非静的関数を呼び出す方法はありますか?

例:パブリック関数doBeforeTask()を持つクラスApp\Helpers\Utilities.phpがあります

プロジェクト内のすべてのクラスでこのメソッドを使用しています。UtilitiesオブジェクトUtilities::doBeforeTask()のインスタンスを作成せずに、Utilities->doBeforeTask()または$obj = new Utilities();を呼び出すことができればかなり便利です。

6
boomdrak

メソッドを静的メソッドとして定義します。次のコードでどこでも呼び出すことができます。

Utilities::doBeforeTask();

ファイルのコード構造App\Helpers\Utilities.php

namespace App\Library;

class Utilities {

 //added new user
 public static function doBeforeTask() {
  // ... you business logic.
 }
}
10
Basit Munir

メソッドを静的メソッドとして定義します。どこにでも呼んで

例を見てみましょう

 namespace App\Http\Utility;

    class ClassName{

        public static function methodName(){
         // ... you business logic.
        }
    }

使用する場所名前空間を指定します

このような:

use App\Http\Utility\ClassName;

ClassName::methodName();

実行することを忘れないでください

composer dump-autoload
2
Terminal

静的関数を定義する

class Foo
{

    public static function staticFunction() {
        return 'Hello World';
    }
}

foo :: staticFunction()を呼び出すようになりました

1
Frank Provost

静的に変更できないメソッドの場合(つまり、ベンダーファイルの場合)、PHP> = 5.4でこれを行うことができます。

$something = (new Something)->foo("bar"); 
0
digout