Laravel(5.2)で、使用されているすべてのクラスで参照オブジェクトをインスタンス化せずに、カスタムオブジェクトで静的関数や非静的関数を呼び出す方法はありますか?
例:パブリック関数doBeforeTask()
を持つクラスApp\Helpers\Utilities.php
があります
プロジェクト内のすべてのクラスでこのメソッドを使用しています。UtilitiesオブジェクトUtilities::doBeforeTask()
のインスタンスを作成せずに、Utilities->doBeforeTask()
または$obj = new Utilities();
を呼び出すことができればかなり便利です。
メソッドを静的メソッドとして定義します。次のコードでどこでも呼び出すことができます。
Utilities::doBeforeTask();
ファイルのコード構造App\Helpers\Utilities.php
namespace App\Library;
class Utilities {
//added new user
public static function doBeforeTask() {
// ... you business logic.
}
}
メソッドを静的メソッドとして定義します。どこにでも呼んで
例を見てみましょう
namespace App\Http\Utility;
class ClassName{
public static function methodName(){
// ... you business logic.
}
}
使用する場所名前空間を指定します
このような:
use App\Http\Utility\ClassName;
ClassName::methodName();
実行することを忘れないでください
composer dump-autoload
静的関数を定義する
class Foo
{
public static function staticFunction() {
return 'Hello World';
}
}
foo :: staticFunction()を呼び出すようになりました
静的に変更できないメソッドの場合(つまり、ベンダーファイルの場合)、PHP> = 5.4でこれを行うことができます。
$something = (new Something)->foo("bar");