• 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

Object Storage Arubacloud
0 głosów
145 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 294 wizyt
pytanie zadane 20 stycznia 2019 w PHP przez niezalogowany
0 głosów
1 odpowiedź 357 wizyt
pytanie zadane 20 stycznia 2019 w PHP przez niezalogowany
0 głosów
3 odpowiedzi 264 wizyt
pytanie zadane 14 września 2018 w Java przez Pablo93 Użytkownik (800 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...