Sub Documents
Laravelで共通クラスを作成する
Laravelでは共通のクラスを作成する方法というのは山ほどあって、用途や思想によって、サービス・プロバイダーを作るとかファサードを作るとか様々なのですが、最もシンプル且つ使いやすい方法として共通のクラスライブラリーを作っておくという方法紹介します。
$ mkdir app/Libraries
$ cd Libraries
$ touch Common.php
これで共通クラスの作成は終わりで、適当な関数を作っておきます。
<?php
namespace App\Libraries;
class Common
{
/**
* Invokes the common functions
*
* @param string $data
* @return boolean
*/
public static function sample($args)
{
return $args;
}
}
この共通クラスを各コントローラーで呼び出すには、
...
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Libraries\Common;
class TestController extends Controller
{
public function libraries_common() {
$sample = Common::sample('foobar');
return $sample;
}
}
みたいな感じで利用することができます。useで呼び出して、そのまま使うだけです。
動的なオブジェクトの場合も同樣に設定してあげて問題ないです。
<?php
namespace App\Libraries;
class Common
{
/**
* Invokes the common functions
*
* @param string $data
* @return boolean
*/
public function sample_a1($args)
{
return $args;
}
}
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Libraries\Common;
class TestController extends Controller
{
public function libraries_common_object() {
$common = new Common();
$sample = $common->sample_a1('foobar_object');
return $sample;
}
}
また、いつも使えるようにclassmapとして、autoloadに加えておくとよいです。
...
"autoload": {
"psr-4": {
"App\\": "app/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
},
"classmap": [
"app/Libraries"
]
},
...