• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dependecny Injection w Laravel

0 głosów
273 wizyt
pytanie zadane 22 czerwca 2019 w PHP przez niezalogowany
zamknięte 22 czerwca 2019

Jak DI działą to wiem, jednakże mechanizm tego w laravel jest dla mnie troszeczke niejasny.

 

Przykład metody z kontrolera


class NewController extends Controller
{
    public function index(Request $request){
        var_dump($request->all());
    }
}

Wywołanie tego w routingu

Route::get('index', 'NewController@index');

Po przejściu na wskazany adres wyświetliła mi się tablica czyli wszystko działa jak nalezy. Problem w tym, że nie rozumiem w jaki sposób obiekt został do tego kontrolera przekazany. Czy dzieje się to jakoś automatycznie  w rdzeniu tego frameworka?

 

W czystym php działa to tak mniej więcej tak i tu jest wszystko jasne:

<?php
class klasa1 {
   public $zm1 = 'zawartosc zm1';
   public function getZm1()
   {
       return $this->zm1;    
   }
}

function newFunction(klasa1 $obj){
  return  $obj->getZm1();
}

echo newFunction(new klasa1());

 

komentarz zamknięcia: Reflection class

1 odpowiedź

0 głosów
odpowiedź 22 czerwca 2019 przez CenterPL Pasjonat (19,070 p.)
wybrane 22 czerwca 2019
 
Najlepsza

Nie znam Laravela, ale jest na 90% pewien, że robi to za pomocą mechanizmu refleksji. To nieco bardziej zaawansowany temat, ale w skrócie chodzi o to, że możemy dobrać się do prywatnych pół klasy albo np pobrać listę argumentów metody (w tym np. konstruktora) i wstrzyknąć odpowiednie klasy z kontenera zależności. Coś w ten deseń:

 

<?php

class ExampleInjectedClass
{
    //code here
};

class exampleClass
{        
    public function __construct(ExampleInjectedClass $eic)
    {
        //code here
    }        
}


$constructor = new ReflectionMethod(ExampleClass::class, '__construct');

$arguments = $constructor->getParameters();

//itd

 

Nie chcę mi się zaglądać do dokumentacji, bo z pamięci trudno mi refleksji używać, nie jest to zbyt częste :D W każdym razie, mam nadzieję, że Cię to nakieruje.

komentarz 22 czerwca 2019 przez niezalogowany

Dzięki za odpowiedź. Faktycznie, ciołek ze mnie :)

Na przyszłość jakby ktoś miał jeszcze taką zagwostke to tutaj jest odpowiedź kierująca na rozwiązanie.

var_dump($reflectionClass->getConstructor()->getParameters()[0]->getClass());

 

Podobne pytania

0 głosów
2 odpowiedzi 606 wizyt
pytanie zadane 20 stycznia 2019 w PHP przez niezalogowany
0 głosów
1 odpowiedź 673 wizyt
pytanie zadane 20 stycznia 2019 w PHP przez niezalogowany
0 głosów
3 odpowiedzi 656 wizyt
pytanie zadane 14 września 2018 w Java przez Pablo93 Użytkownik (800 p.)

93,753 zapytań

142,713 odpowiedzi

323,356 komentarzy

63,348 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...