Внедрение зависимостей в Laravel

У меня есть класс журнала, как показано ниже, и я хотел бы добавить ниже класс в мой контроллер и сделать журнал:

<?php

namespace App\Helpers;

use DB;


class Log {

private $tableName;
private $tableId;
private $tableIdVal;
private $step;
private $status;
private $error;

public function __construct($logTableName, $logTableId, $logTableIdVal, $step, $status, $error = null) {

$this->tableName = $logTableName;
$this->tableId   = $logTableId;
$this->tableIdVal= $logTableIdVal;
$this->step      = $step;
$this->status    = $status;
$this->error     = $error;

}

protected function create() {

DB::table($this->tableName)->insert(
[
$this->tableId  =>  $this->tableIdVal,
'step'          =>  $this->step,
'error'         =>  $this->error,
'status'        =>  $this->status
]
);
}

}
<?php

namespace App\Http\Controllers;

use App\Helpers\{Load, Log};
use App\Models\{Post, Raw, RawDetail};

use DB;

class DetailsController extends Controller
{
private $file;
private $log;

public function __construct($record, Log $logger) {

$this->file = $record;
$this->log  = $logger;
}

public function process() {

//make a log (is this correct?) I think $this->log will find a log method in this file, which does not exist.
//I want to simple make a call to the constructor and then call create method on it.
$this->log('raw_logs', 'raw_id', $this->file->id, Raw::STEP_1, Raw::STATUS_1);

Если я использую инъекцию зависимостей, как мне сделать выше?

Я могу сделать это, как показано ниже:

$log = new Log($all-params-here);
$log->create();

Но я хочу избежать использования нового.

Что я хочу сделать.

$this->log($parameters)->create();

0

Решение

  1. Вы можете сделать так, как сказал @HtmHell в комментарии ex: $this->log->create(parameters);
  2. Вы создаете метод цепочки ex: $this->log->setData($parameters)->create();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]