Итак, у меня есть BaseValuation
абстрактный класс и пример его реализации FooValuation
и BarValuation
.
Я хочу создать реализации Foo
или Bar
в зависимости от использования ввода.Поэтому я сам создал простой класс Valuation
, который просто делает это:
<?php
namespace App\Valuation;
class Valuation
{
public $class;
public function __construct($id, $type = 'basic')
{
$class = 'App\Valuation\Models\\' . ucfirst($type) . 'Valuation';
$this->class = new $class($id);
}
public function make()
{
return $this->class;
}
}
Используя это, я могу просто сделать (new App\Valuation\Valuation($id, $type))->make()
, и я получу желаемую реализацию в соответствии с тем, о чем просил использование.
Но я знаю, что контейнер Ларавелла является мощным и должен позволить мне как-то это сделать, но я не могу понять, как это будет сделано.Любые идеи кто-нибудь?