Hi,
Wederom bezig met het Dependency Injection gedeelte van Laravel.
Het moet een builder worden om Stored Procedures af te vuren.
Middels de interface wil de interface kunnen binden aan een andere implementatie. Bijv. MySQL in plaats van MSSQL.
Mijn inziens zou dit moeten werken. Ziet iemand wat ik niet zie?
Ik hoor graag jullie reactie.
Wederom bezig met het Dependency Injection gedeelte van Laravel.
Het moet een builder worden om Stored Procedures af te vuren.
Middels de interface wil de interface kunnen binden aan een andere implementatie. Bijv. MySQL in plaats van MSSQL.
Mijn inziens zou dit moeten werken. Ziet iemand wat ik niet zie?

Ik hoor graag jullie reactie.
PHP:
1
2
| // waarom gaat dit mis? In de Procedure class laad ik juist de interface: public function __construct(ProcedureInterface $proc){ Argument 1 passed to App\Classes\Proc\Procedure::__construct() must be an instance of App\Classes\Proc\ProcedureInterface, string given, called in C:\Program Files (x86)\Ampps\www\sql\app\Http\Controllers\HomeController.php on line 22 and defined |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <?php // controller namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Requests; use App\Classes\Proc\Procedure; class HomeController extends Controller { // public function index(){ $proc = new Procedure('tmp_test'); $proc->string('testvansec'); $proc->number('19.95'); $proc->exec(); } } |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| <?php // Repo namespace App\Classes\Proc; use App\Classes\Proc\ProcedureInterface; class Procedure { protected $procedure; // construct with procedure public function __construct(ProcedureInterface $proc){ //$pro, // interface $this->procedure = $proc; dd($proc); exit; // set procedure // $this->procedure->set($pro); } // add string public function string($str){ $this->procedure->string($str); } // add number public function number($number){ $this->procedure->number($str); } // execute public function exec(){ return $this->procedure->exec(); } } |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?php // interface /contract namespace App\Classes\Proc; interface ProcedureInterface { public function set($procedure); public function string($str); public function number($number); public function exec(); } |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?php namespace App\Classes\Proc; interface ProcedureInterface { public function set($procedure); public function string($str); public function number($number); public function exec(); } |
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| <?php namespace App\Providers; use Illuminate\Support\ServiceProvider; use App\Classes\Proc\ProcedureInterface; use App\Classes\Proc\SqlSrvClass; class ProcedureServiceProvider extends ServiceProvider { /** * Bootstrap the application services. * * @return void */ public function boot() { // } /** * Register the application services. * * @return void */ public function register() { // $this->app->bind(ProcedureInterface::class, SqlSrvClass::class); } } |