Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.lang.php > #15828 > unrolled thread

Laravel - jak to to działa?

Started byMarek S <precz@spamowi.com>
First post2018-11-30 23:17 +0100
Last post2018-12-10 23:07 +0100
Articles 20 on this page of 48 — 5 participants

Back to article view | Back to pl.comp.lang.php


Contents

  Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-11-30 23:17 +0100
    Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-01 20:35 +0100
      Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-02 22:51 +0100
        Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-03 14:01 +0100
          Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-04 20:55 +0100
            Re: Laravel - jak to to działa? Rafal Podsiadly <spinacz24@gmail.com> - 2018-12-05 12:41 -0800
              Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-06 22:43 +0100
                Re: Laravel - jak to to działa? Rafal Podsiadly <spinacz24@gmail.com> - 2018-12-06 21:50 -0800
                  Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-07 09:24 +0100
                  Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-08 00:01 +0100
                    Re: Laravel - jak to to działa? Rafal Podsiadly <spinacz24@gmail.com> - 2018-12-08 00:23 -0800
                      Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-08 19:29 +0100
                        Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-08 20:27 +0100
                          Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-08 21:53 +0100
                            Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-08 22:27 +0100
                              Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-09 00:07 +0100
                                Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-09 11:19 +0100
                          Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-09 22:43 +0100
                            Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-10 20:49 +0100
                              Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-10 21:55 +0100
                        Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-09 22:49 +0100
                          Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-09 22:58 +0100
                            Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-10 22:48 +0100
                              Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-10 23:56 +0100
                                Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-11 23:33 +0100
                                  Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-12 14:33 +0100
                                    Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-14 22:04 +0100
                                      Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-14 22:08 +0100
                                        Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-16 12:24 +0100
                                          Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-16 16:47 +0100
                                            Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-16 17:01 +0100
                      Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-08 22:03 +0100
                        Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-08 22:29 +0100
                          Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-09 00:19 +0100
                            Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-09 11:10 +0100
                            Re: Laravel - jak to to działa? Rafal Podsiadly <spinacz24@gmail.com> - 2018-12-09 08:36 -0800
                              Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-09 18:02 +0100
                                Re: Laravel - jak to to działa? Rafal Podsiadly <spinacz24@gmail.com> - 2018-12-09 09:48 -0800
                                  Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-09 21:24 +0100
                                    Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-09 22:55 +0100
                                      Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-10 20:59 +0100
                                        Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-10 21:53 +0100
                                          Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-10 22:10 +0100
                                            Re: Laravel - jak to to działa? Borys Pogoreło <borys@pl.edu.leszno> - 2018-12-10 23:54 +0100
                                              Re: Laravel - jak to to działa? Wojciech Bancer <wojciech.bancer@gmail.com> - 2018-12-11 10:43 +0100
                              Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-10 23:02 +0100
                    Re: Laravel - jak to to działa? Tomek <skowtm@wp.xx.pl> - 2018-12-10 10:08 +0100
                      Re: Laravel - jak to to działa? Marek S <precz@spamowi.com> - 2018-12-10 23:07 +0100

Page 1 of 3  [1] 2 3  Next page →


#15828 — Laravel - jak to to działa?

FromMarek S <precz@spamowi.com>
Date2018-11-30 23:17 +0100
SubjectLaravel - jak to to działa?
Message-ID<ptsctv$cfj$1@node1.news.atman.pl>
Witam Was,

Mam kłopot z ogarnięciem frameworka. Mamy fasadę Request::get lub 
Request::post. Chciałbym dowiedzieć się jaki kod fizycznie się wykonuje 
w tym momencie. Wymiękłem w chwili gdy okazało się, że get i post to 
elementy tablicy - cholera wie gdzie inicjowanej. Czy ktoś z Was potrafi 
mi wyjaśnić, gdzie znajduje się kod kryjący się za fasadami? Pytam 
ogólnie - niekoniecznie odnośnie quasi metod get i post Request'a.

-- 
Pozdrawiam,
Marek

[toc] | [next] | [standalone]


#15831

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-12-01 20:35 +0100
Message-ID<1v0xvyvpzdfv7$.1rpu9f5pj0855.dlg@40tude.net>
In reply to#15828
Dnia Fri, 30 Nov 2018 23:17:30 +0100, Marek S napisał(a):

> Mam kłopot z ogarnięciem frameworka. Mamy fasadę Request::get lub 
> Request::post. Chciałbym dowiedzieć się jaki kod fizycznie się wykonuje 
> w tym momencie. Wymiękłem w chwili gdy okazało się, że get i post to 
> elementy tablicy - cholera wie gdzie inicjowanej. Czy ktoś z Was potrafi 
> mi wyjaśnić, gdzie znajduje się kod kryjący się za fasadami? Pytam 
> ogólnie - niekoniecznie odnośnie quasi metod get i post Request'a.

Fasada to tylko inny sposób dostępu do kontenera IoC. Czyli np. pisząc
DB::query() sięgasz do kontenera pod klucz zdefiniowany w pliku
Illuminate/Support/Facades/DB.php:

protected static function getFacadeAccessor()
{
    return 'db';

}

co w efekcie jest równoważne:

app()->make('db')->query(...)

Zaś do GET/POST najprościej się dostać przez instancję obiektu klasy
Request automatycznie wstrzykiwaną przez podpowiadanie typów do metody
kontrolera obsługującego bieżącą akcję, czyli po prostu:

public function twojaAkcja(Request $request)
{
    $zmiennaGet = $request->input('zmienna');
    // ...
}

Oczywiście możesz też pisać Request::input() lub request()->input() czy po
prostu app()->make('request')->input() albo nawet
app()->make(\Illuminate\Http\Request::class)->input().

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


#15832

FromMarek S <precz@spamowi.com>
Date2018-12-02 22:51 +0100
Message-ID<pu1k56$dd4$1@node2.news.atman.pl>
In reply to#15831
W dniu 2018-12-01 o 20:35, Borys Pogoreło pisze:

> Fasada to tylko inny sposób dostępu do kontenera IoC. Czyli np. pisząc
> DB::query() sięgasz do kontenera pod klucz zdefiniowany w pliku
> Illuminate/Support/Facades/DB.php:

To ja wiem. Sęk w tym, że w Laravelu fasady są w zasadzie puste. Coś je 
uzupełnia po uruchomieniu frameworka. Tak jest w przypadku wspomnianego 
Requesta. Fasada zawiera inicjalnie pustą tablicę, którą wypełnia nie 
wiadomo co. Gdy wołamy get(), to wywołuje się de facto odwołanie do 
wewnętrznej tablicy z polem "get", które z kolei zawiera wskaźnik do 
jakiejś metody. Z pewnością nią nie jest Request::get bo ... Request nie 
zawiera niczego takiego. Zresztą, który Request, bo znalazłem ich więcej 
niż 1?

Szukam konkretnie listingu metody get/post. Wymiękłem analizując ścieżkę 
do ścieżki zawierającą ścieżkę.

> Zaś do GET/POST najprościej się dostać przez instancję obiektu klasy
> Request automatycznie wstrzykiwaną przez podpowiadanie typów do metody
> kontrolera obsługującego bieżącą akcję, czyli po prostu:
> 
> public function twojaAkcja(Request $request)
> {
>      $zmiennaGet = $request->input('zmienna');
>      // ...
> }

Zupełnie nie o to mi chodziło lecz o źródło w/w metody.

A skoro wspominasz o tym, to również nie bardzo ogarniam takie 
wstrzykiwanie. W/g mnie wstrzykiwaniem nazywa się proces w postaci:

$obiekt1=new CośTam();
$obiekt2->metoda($obiekt1);

gdzie

class Obiekt2 {
	...

	//$_cosTam to coś, co wstrzykujemy
	public function metoda(CośTam $_cosTam) {

		}
}

Tymczasem odwrotne podejście w postaci

$obiekt2->metoda(Co $co, Nam $nam, Ślina $ślina, Na $na, Język $język, 
Przyniesie $przyniesie);

jest dla mnie również kompletnie niezrozumiałe. Sądziłem, że jakakolwiek 
metoda gdziekolwiek powinna spodziewać się ściśle konkretnych 
argumentów. Tymczasem okazuje się, ze z jakiś niejasnych względów zadziała:

$obiekt->twojaAkcja(Request $request)

jak i

$obiekt->twojaAkcja(URL $url)

Czyli wynika z tego, że w jakiś magiczny sposób powyższy $request będzie 
przekazywał wartość new Request mimo iż nigdzie nie używam operatora 
new. Tak PHP nie działa. Operator new sam się nie doda a mimo wszystko 
to działa. O co chodzi?

-- 
Pozdrawiam,
Marek

[toc] | [prev] | [next] | [standalone]


#15833

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-12-03 14:01 +0100
Message-ID<h7gl5chedxpp.1jwtzx4lghnpe$.dlg@40tude.net>
In reply to#15832
Dnia Sun, 2 Dec 2018 22:51:27 +0100, Marek S napisał(a):

>> Fasada to tylko inny sposób dostępu do kontenera IoC. Czyli np. pisząc
>> DB::query() sięgasz do kontenera pod klucz zdefiniowany w pliku
>> Illuminate/Support/Facades/DB.php:
> 
> To ja wiem. Sęk w tym, że w Laravelu fasady są w zasadzie puste. Coś je 
> uzupełnia po uruchomieniu frameworka. 

Przeczytaj jeszcze raz dokładnie to co napisałem. Masz metodę
getFacadeAccessor(), która zwraca alias po którym obiekt jest pobierany z
kontenera IoC.

Jeśli chcesz znaleźć to "coś", to jest ono w metodzie
Illuminate\Foundation\Application::registerCoreContainerAliases()

> jest dla mnie również kompletnie niezrozumiałe. Sądziłem, że jakakolwiek 
> metoda gdziekolwiek powinna spodziewać się ściśle konkretnych 
> argumentów. Tymczasem okazuje się, ze z jakiś niejasnych względów zadziała:

Jeśli przeczytasz dokumentację i opis "type hinting", to wszystko będzie
jasne. Laravel używa Reflection by automatycznie podstawić obiekty z IoC na
podstawie typów. Taka magia, całkiem wygodna.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


#15834

FromMarek S <precz@spamowi.com>
Date2018-12-04 20:55 +0100
Message-ID<pu6m4i$up$1@node2.news.atman.pl>
In reply to#15833
Hej,

Odpowiem niebawem - mam ograniczony czas. Temat jest ważny dla mnie.

-- 
Pozdrawiam,
Marek

[toc] | [prev] | [next] | [standalone]


#15835

FromRafal Podsiadly <spinacz24@gmail.com>
Date2018-12-05 12:41 -0800
Message-ID<7367cb98-1e11-4ea9-9b5a-846c6259d56b@googlegroups.com>
In reply to#15834
@Marku czytałeś https://laravel.com/docs/5.7/facades ?

[toc] | [prev] | [next] | [standalone]


#15836

FromMarek S <precz@spamowi.com>
Date2018-12-06 22:43 +0100
Message-ID<puc568$u7g$1@node1.news.atman.pl>
In reply to#15835
W dniu 2018-12-05 o 21:41, Rafal Podsiadly pisze:

> @Marku czytałeś https://laravel.com/docs/5.7/facades ?
> 

Tak, oczywiście. Napisałem, że poległem analizując realny kod. Dotarłem 
do etapu kiedy fasada nie robi nic innego jak tylko zwraca string. 
Bazując na przykładzie z dokumentacji jest to:

  protected static function getFacadeAccessor() { return 'cache'; }

Ale string przecież nie wykona żadnej operacji cache'owania więc 
funkcjonalność z Cache::get() z pewnością niczego tu nie wykona.

No to lecimy dalej. Ten string wędruje do Service Container'a. A co on 
takiego robi? Zagląda do pokrótce tablicy (UserRepository) i wywołuje 
find. Czyli znów tu kodu naszego Cache::get() nie znajdziemy.


Znów lećmy dalej. W tablicy models znajduje się wreszcie obiekt 
reprezentujący wołaną metodę. Fajnie, ale tablica obiektów nie ma nic 
wspólnego z kodem źródłowym klas tych obiektów. Więc znów jesteśmy w 
czarnej d... Ale przynajmniej wiemy czego szukać.

Teraz trzeba zajrzeć od drugiej strony i znaleźć miejsce, w którym ta 
tablica będzie wypełniana obiektami. Zapewne będzie trzeba rozpocząć 
poszukiwania od index.php i schodzić coraz niżej.

W ten sposób cały wieczór będę szukał źródeł Cache::get albo Route::get 
itd. Czytanie dokumentacji zero pomogło. To jest tylko ogólnikowe bla 
bla bla. Do programowania wystarczy ale nie pozwoli na wgryzienie się w 
źródło. Więc ponawiam pytanie z wątku otwierającego.

-- 
Pozdrawiam,
Marek

[toc] | [prev] | [next] | [standalone]


#15837

FromRafal Podsiadly <spinacz24@gmail.com>
Date2018-12-06 21:50 -0800
Message-ID<fd0067a6-b2cb-4d89-9ec5-8a01de76e14a@googlegroups.com>
In reply to#15836
https://stackoverflow.com/questions/4578335/creating-php-class-instance-with-a-string

Klase mozna uyworzyc przechowujac jej nazwe w zmiennej. Czyli w efekcie return cache odwołuje sie do klasy cache ktora jest tworzona w momencie wywolania.

Z tego co wyczytalem w php.net ten mechanizm jest przestarzaly i nie powinno sie go uzywac.

[toc] | [prev] | [next] | [standalone]


#15838

FromWojciech Bancer <wojciech.bancer@gmail.com>
Date2018-12-07 09:24 +0100
Message-ID<slrnq0kbho.2kb6.wojciech.bancer@pl-test.org>
In reply to#15837
On 2018-12-07, Rafal Podsiadly <spinacz24@gmail.com> wrote:
> https://stackoverflow.com/questions/4578335/creating-php-class-instance-with-a-string
>
> Klase mozna uyworzyc przechowujac jej nazwe w zmiennej. Czyli w efekcie return cache odwołuje sie do klasy cache ktora jest tworzona w momencie wywolania.
> Z tego co wyczytalem w php.net ten mechanizm jest przestarzaly i nie powinno sie go uzywac.

Po prostu lepiej do tego użyć ReflectionClass.

$class = new \ReflectionClass('Klasa');
$instance = $class->newInstance();

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com

[toc] | [prev] | [next] | [standalone]


#15839

FromMarek S <precz@spamowi.com>
Date2018-12-08 00:01 +0100
Message-ID<pueu5g$lps$1@node2.news.atman.pl>
In reply to#15837
W dniu 2018-12-07 o 06:50, Rafal Podsiadly pisze:
> https://stackoverflow.com/questions/4578335/creating-php-class-instance-with-a-string
> 
> Klase mozna uyworzyc przechowujac jej nazwe w zmiennej. Czyli w efekcie return cache odwołuje sie do klasy cache ktora jest tworzona w momencie wywolania.

Ok, ale zupełnie nie o to mi chodziło w zapytaniu. Wydawało mi się iż 
pytanie jest klarowne. Pytałem się o to gdzie jest kod dla akcji 
Request::get lub jakiejkolwiek innej. Nie interesuje mnie fasada, która 
nic nie robi poza zajmowaniem czasu CPU lecz fizyczny kod PHP.

Nie wiem w czym rzecz, że nie jestem zrozumiały w zapytaniu. Już dwie 
osoby skierowały mnie do zapoznania się z działaniem fasad w Laravelu 
zamiast do metodologii docierania do źródeł tego co fizycznie metoda X 
czy Y realizuje.

-- 
Pozdrawiam,
Marek

[toc] | [prev] | [next] | [standalone]


#15840

FromRafal Podsiadly <spinacz24@gmail.com>
Date2018-12-08 00:23 -0800
Message-ID<8a7c8a09-6a2a-4830-90bf-a10721944e26@googlegroups.com>
In reply to#15839
Zwracają uwagę na to co napisał @Borys zaglądam sobie da katalogu 

vendor\laravel\framework\src\Illuminate\Routing

I tam mam kod dla całego routingu.

vendor\laravel\framework\src\Illuminate\Routing\Route.php#894

Mam twój route::get

W korzystaniu z frameroków chodzi o to, że by nie zastanawiać sie jak to działa a zaufać i pisać kod. separować to co jest powtarzalne dla wielu projektów do jednego miejsca i o tym zapomnieć

Dlatego wspomiania fasada route jest zarejestowana w pliku
config\app.php#221

Następnie uruchomianie fasady generuje kod wyzwolenia vendor\laravel\framework\src\Illuminate\Routing\Route.php i to zawsze się do tego obiektu odwołujesz.

Dzięki takiemu zachowaniu mamy leniwe ładowanie (czyli tylko wtedy gdy zapytam) i oszczędzamy na miejscu bo ładujemy tylko to o co pytam. 

Dzięki temu inny jest zestaw metod (patrz w anotate) dla projektu uruchamianego z konsoli by go przetestować 
a inny zestaw metod dla projektu z http

[toc] | [prev] | [next] | [standalone]


#15841

FromMarek S <precz@spamowi.com>
Date2018-12-08 19:29 +0100
Message-ID<puh2he$mbe$1@node1.news.atman.pl>
In reply to#15840
W dniu 2018-12-08 o 09:23, Rafal Podsiadly pisze:
> Zwracają uwagę na to co napisał @Borys zaglądam sobie da katalogu
> 
> vendor\laravel\framework\src\Illuminate\Routing
> 
> I tam mam kod dla całego routingu.
> 
> vendor\laravel\framework\src\Illuminate\Routing\Route.php#894
> 
> Mam twój route::get

A czy zaglądałeś w ogóle do kodu? Tam nie ma metody get(). W najnowszej 
wersji Laravela mam coś takiego:

     public function __get($key)
     {
         return $this->parameter($key);
     }

__get() to zupełnie coś innego niż get(). Jest to przecież magiczna 
funkcja wywoływana gdy próbujemy odczytać nieistniejący komponent klasy, 
co też właśnie czynimy pośrednio za pomocą Route::get(). Oczywiście 
doszedłem do tego przekopując się przez zasieki frameworka.

W tejże metodzie znajduje się kolejne pośredniczące ogniwo łańcuszka 
świętego Antoniego. __get wywołuje metodę parameter($key). Ta z kolei 
korzysta z metody statycznej Arr:get, która znów coś tam robi zupełnie 
nie związanego z moim pytaniem.

Wykonuje się w efekcie pierdylion różnych funkcji zawierających po 
linijce kodu zanim wreszcie dotrzemy do właściwego obiektu. A poza tym, 
przypomnę - nie obiekt mnie interesuje lecz jego kod źródłowy.


> W korzystaniu z frameroków chodzi o to, że by nie zastanawiać sie jak
> to działa a zaufać i pisać kod. separować to co jest powtarzalne dla
> wielu projektów do jednego miejsca i o tym zapomnieć

Ależ oczywiście masz rację, ale ja nie o to pytam. Napisałem zresztą w 
poprzedniej wypowiedzi, że "do programowania ta wiedza wystarczy" ale ja 
nie pytam się o to jak programować lecz o fizyczny kod np. Route::get. 
De facto pytam o metodologię docierania do kodu źródłowego każdego 
elementu frameworka.

> Dlatego wspomiania fasada route jest zarejestowana w pliku 
> config\app.php#221

Ok, to rozumiem.

> 
> Następnie uruchomianie fasady generuje kod wyzwolenia
> vendor\laravel\framework\src\Illuminate\Routing\Route.php i to zawsze
> się do tego obiektu odwołujesz.

To też rozumiem.

> Dzięki takiemu zachowaniu mamy leniwe ładowanie (czyli tylko wtedy
> gdy zapytam) i oszczędzamy na miejscu bo ładujemy tylko to o co
> pytam.

I to jest fajne - ale nie ma związku z pytaniem. Choć tu też korci mnie 
zapytać o zupełnie coś innego, ale obawiam się, ze wtedy dyskusja na tym 
się skupi i umknie moje pierwotne pytanie :-

-- 
Pozdrawiam,
Marek

[toc] | [prev] | [next] | [standalone]


#15842

FromWojciech Bancer <wojciech.bancer@gmail.com>
Date2018-12-08 20:27 +0100
Message-ID<slrnq0o6pt.1k73.wojciech.bancer@pl-test.org>
In reply to#15841
On 2018-12-08, Marek S <precz@spamowi.com> wrote:

[...]

>> W korzystaniu z frameroków chodzi o to, że by nie zastanawiać sie jak
>> to działa a zaufać i pisać kod. separować to co jest powtarzalne dla
>> wielu projektów do jednego miejsca i o tym zapomnieć
>
> Ależ oczywiście masz rację, ale ja nie o to pytam. Napisałem zresztą w 
> poprzedniej wypowiedzi, że "do programowania ta wiedza wystarczy" ale ja 
> nie pytam się o to jak programować lecz o fizyczny kod np. Route::get. 
> De facto pytam o metodologię docierania do kodu źródłowego każdego 
> elementu frameworka.

No najwięcej szans masz z dobrym edytorem, który ma dobre podpowiadanie.
PhpStorm chyba ma https://plugins.jetbrains.com/plugin/7532-laravel-plugin taki plugin.
Jeśli działa tak jak symfony, to jest szansa że dość dużo podpowie (ja niestety laravela 
nie używam), a jak będzie znał metodę, to i będziesz mógł do jej definicji trafić.
Wszystkiego Ci nie podpowie, bo na 90% obiekty są zbierane z różnych komponentów,
traitów, metod magicznych i co tam jeszcze.

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com

[toc] | [prev] | [next] | [standalone]


#15843

FromMarek S <precz@spamowi.com>
Date2018-12-08 21:53 +0100
Message-ID<puhavu$sg6$1@node2.news.atman.pl>
In reply to#15842
W dniu 2018-12-08 o 20:27, Wojciech Bancer pisze:

> No najwięcej szans masz z dobrym edytorem, który ma dobre podpowiadanie.
> PhpStorm chyba ma https://plugins.jetbrains.com/plugin/7532-laravel-plugin taki plugin.

Pracuję w tym właśnie edytorze i mam w/w plugin. On jest niewiele wart w 
powyższej kwestii. Rozwiązuje natomiast istotny problem. Ponieważ metody 
udostępniane przez Laravel są ściśle tajne (dla IDE), to plugin 
doinstalowuje niby fałszywą implementację tych metod (na poziomie 
helpera). Dzięki temu mam podpowiedzi parametrów itp. Dodatkowo w menu 
frameworków można sobie wtedy coś poustawiać dla Laravela. W żadnym 
razie nie uzyskasz informacji na temat źródła fl Route::get()

> Jeśli działa tak jak symfony, to jest szansa że dość dużo podpowie (ja niestety laravela
> nie używam), a jak będzie znał metodę, to i będziesz mógł do jej definicji trafić.
> Wszystkiego Ci nie podpowie, bo na 90% obiekty są zbierane z różnych komponentów,
> traitów, metod magicznych i co tam jeszcze.

No więc właśnie. PHPStorm to zwykłe IDE. Jeśli producent frameworka 
zaszyfrował i założył zasieki na wścibskich, to jedyne co otrzymujesz, 
to podpowiedzi do interfejsu w trakcie programowania.

-- 
Pozdrawiam,
Marek

[toc] | [prev] | [next] | [standalone]


#15845

FromWojciech Bancer <wojciech.bancer@gmail.com>
Date2018-12-08 22:27 +0100
Message-ID<slrnq0odp5.1o67.wojciech.bancer@pl-test.org>
In reply to#15843
On 2018-12-08, Marek S <precz@spamowi.com> wrote:

[...]

>> Jeśli działa tak jak symfony, to jest szansa że dość dużo podpowie (ja niestety laravela
>> nie używam), a jak będzie znał metodę, to i będziesz mógł do jej definicji trafić.
>> Wszystkiego Ci nie podpowie, bo na 90% obiekty są zbierane z różnych komponentów,
>> traitów, metod magicznych i co tam jeszcze.
>
> No więc właśnie. PHPStorm to zwykłe IDE. Jeśli producent frameworka 
> zaszyfrował i założył zasieki na wścibskich, to jedyne co otrzymujesz, 
> to podpowiedzi do interfejsu w trakcie programowania.

Tam zaraz zasieki. To jest po prostu troszkę bardziej "fancy" programowanie obiektowe.
A trudno się to analizuje, bo jest efekt skali (duży framework). Niekoniecznie 
przejrzyste i przystępne, ale co zrobić. Jak Ci tak zależy, to sobie puść debuger 
step by step, to pewnie w końcu dojdziesz.

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com

[toc] | [prev] | [next] | [standalone]


#15847

FromMarek S <precz@spamowi.com>
Date2018-12-09 00:07 +0100
Message-ID<puhirh$4hs$2@node2.news.atman.pl>
In reply to#15845
W dniu 2018-12-08 o 22:27, Wojciech Bancer pisze:

> przejrzyste i przystępne, ale co zrobić. Jak Ci tak zależy, to sobie puść debuger
> step by step, to pewnie w końcu dojdziesz.
> 

Wątek napisałem po tym jak sobie zapuściłem go. Za dużo jest nic nie 
robiących funkcji do funkcji z funkcji dla funkcji. Liczyłem na to, że 
ktoś z Was Wie, gdzie Laravel ukrywa funkcjonalność i jest na to jakiś 
schemat.

-- 
Pozdrawiam,
Marek

[toc] | [prev] | [next] | [standalone]


#15850

FromWojciech Bancer <wojciech.bancer@gmail.com>
Date2018-12-09 11:19 +0100
Message-ID<slrnq0pr12.2bnd.wojciech.bancer@pl-test.org>
In reply to#15847
On 2018-12-08, Marek S <precz@spamowi.com> wrote:

[...]

>> przejrzyste i przystępne, ale co zrobić. Jak Ci tak zależy, to sobie puść debuger
>> step by step, to pewnie w końcu dojdziesz.
>
> Wątek napisałem po tym jak sobie zapuściłem go. Za dużo jest nic nie 
> robiących funkcji do funkcji z funkcji dla funkcji. Liczyłem na to, że 
> ktoś z Was Wie, gdzie Laravel ukrywa funkcjonalność i jest na to jakiś 
> schemat.

No jest. Reflection Class, Traits i Dependency Injection.
Tylko nikomu się nie chce analizować tego kodu bez wyraźnej potrzeby,
bo taka wiedza specjalnie nic dużo nie daje.

Można zauważyć, implementacja zmienia się czasem z wersji na wersję, ale póki
działa (są testy), to po co uczyć się konkretnie tej jednej implementacji
dla tej jednej wersji?

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com

[toc] | [prev] | [next] | [standalone]


#15855

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-12-09 22:43 +0100
Message-ID<1p0p51whbumi0.1jkd26p4xv8ar$.dlg@40tude.net>
In reply to#15842
Dnia Sat, 8 Dec 2018 20:27:56 +0100, Wojciech Bancer napisał(a):

> No najwięcej szans masz z dobrym edytorem, który ma dobre podpowiadanie.
> PhpStorm chyba ma https://plugins.jetbrains.com/plugin/7532-laravel-plugin taki plugin.

Zamiast tego proponuję:

composer require barryvdh/laravel-ide-helper

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


#15860

FromWojciech Bancer <wojciech.bancer@gmail.com>
Date2018-12-10 20:49 +0100
Message-ID<slrnq0tgqf.15p8.wojciech.bancer@pl-test.org>
In reply to#15855
On 2018-12-09, Borys Pogoreło <borys@pl.edu.leszno> wrote:

[...]

>> No najwięcej szans masz z dobrym edytorem, który ma dobre podpowiadanie.
>> PhpStorm chyba ma https://plugins.jetbrains.com/plugin/7532-laravel-plugin taki plugin.
>
> Zamiast tego proponuję:
> composer require barryvdh/laravel-ide-helper

Ja od laravela to daleko stoję :)

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com

[toc] | [prev] | [next] | [standalone]


#15863

FromBorys Pogoreło <borys@pl.edu.leszno>
Date2018-12-10 21:55 +0100
Message-ID<5e1htz3y6tix.1ss2z3lzdx4p8$.dlg@40tude.net>
In reply to#15860
Dnia Mon, 10 Dec 2018 20:49:34 +0100, Wojciech Bancer napisał(a):

>> Zamiast tego proponuję:
>> composer require barryvdh/laravel-ide-helper
> 
> Ja od laravela to daleko stoję :)

A ja od Angulara ;)

Ten pakiet jest o tyle fajny, że działa niezależnie od IDE, generując jawne
powiązania między "magicznymi" odwołaniami w kodzie.

-- 
Borys Pogoreło
borys(#)leszno,edu,pl

[toc] | [prev] | [next] | [standalone]


Page 1 of 3  [1] 2 3  Next page →

Back to top | Article view | pl.comp.lang.php


csiph-web