![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam pytanie. Otóż w encji symfony2 w każdym setterze jest "return $this". Moje pytanie brzmi po co ? Skoro i tak ustawiamy jakaś wartość na jakąś zmienną to geterem i tak uzyskamy dostęp do danej właściwości. Nie rozumiem tego, może mi ktoś wyjasnić? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
to sie fachowo nazywa chainging (albo jakos tak)
i jak masz return $this to mozesz robic
a bez chaingingu
ogólnie chodzi o to że metoda set zwraca obiekt klasy i nie dotyczy to tylko metod set ale wszystkich metod ktore zmieniaja stan obiektu. Ten post edytował skowron-line 23.05.2015, 17:19:53 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 268 Pomógł: 254 Dołączył: 11.06.2009 Skąd: Świętochłowice Ostrzeżenie: (0%) ![]() ![]() |
Nie chainging, a chaining - od łańcucha, bo tworzymy łańcuch wywołań (IMG:style_emoticons/default/wink.gif) Ot, taka drobnostka, która uprzyjemnia korzystanie z API
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Okej rozumiem. A powiedzcie mi, bo okej setter ustawi np. $this->name = $name; i w getterze mogę to wywołać, ale wywołam tylko tą właściwość(var_dump z tego będzie string(20) jakiśname) , a jak wywołać to jako obiekt?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 18 Dołączył: 7.10.2007 Skąd: Pruszków Ostrzeżenie: (0%) ![]() ![]() |
Nie bardzo Cię rozumiem. Jeśli masz $name jako string to geter Ci zwróci tego stringa. Jeśli chcesz mieć obiekt to robisz obiekt z tej klasy.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Źle napisałem,
mam klasę User i klasę Role, ale np. żeby dodać role muszę wstrzyknąć nazwę użytkowniak obiekt user ale nie chce całego tylko np. settera z username jak wrzucę mu poprostu tego stringa to wywali błąd, a rozumiem, że mogę zrobić to tak addRole(new User->setName('admin')) i będzie okej tak ? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Nie chainging, a chaining - od łańcucha, bo tworzymy łańcuch wywołań (IMG:style_emoticons/default/wink.gif) Ot, taka drobnostka, która uprzyjemnia korzystanie z API Lub fluent setters Źle napisałem, mam klasę User i klasę Role, ale np. żeby dodać role muszę wstrzyknąć nazwę użytkowniak obiekt user ale nie chce całego tylko np. settera z username jak wrzucę mu poprostu tego stringa to wywali błąd, a rozumiem, że mogę zrobić to tak addRole(new User->setName('admin')) i będzie okej tak ? Skoro w addRole() musisz przekazać stringa jako parametr, to skorzystasz z getName() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Musisz przekazać w obiekt User który posiada tylko naazwe użytkownika . Jak dam samo getUser to powinno wywalić błąd bo przekazuje czystego stringa a nie obiekt
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Jak mniemam to getter getName()/getUser() (już nie wiem bo różnie nazywasz) zwraca stringa a nie obiekt
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie tak.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Przecież to się robi tak:
i później sprawdzasz:
To są podstawy dokumentacji symfony.. w czym problem? Ten post edytował Forti 25.05.2015, 08:48:23 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Okej wiem już wszystko. Forti powiedz mi czym się różni is granted od has role tak w praktyce?
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 3 034 Pomógł: 366 Dołączył: 24.05.2012 Ostrzeżenie: (0%) ![]() ![]() |
A propos nazewnictwa to takie klasy implementują fluent interface pattern, skoro mowa o fachowych nazwach.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli dobrze kojarzę, to hasRole to nic innego jak getter w encji user domyślnie wbudowane w FOSUserBundle. Sprawdza czy user ma ROLE. Ogólnie w FOSUserBundle działa to na zasadzie, że możesz użytkownikowi dodać kilka ról, np. masz:
ROLE_USER ROLE_MODERATOR ROLE_REDAKTOR ROLE_ADMIN i chcesz aby user X miał redaktora, ale nie moderatora. Można to zrobić w postaci hierarchi, że user > redaktor, user > moderator, a nie moderator > redaktor. I wówczas user ma przypisane dwie role. Wydaje mi się że nie ma różnicy (IMG:style_emoticons/default/wink.gif) isGranted to po prostu wrapper na
gdzie odwołujesz się do zalogowanego obecnie user, a hasRole możesz sprawdzić role dla innego użytkownika. Troche chaotycznie to napisałem (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) ![]() ![]() |
Czyli jak chce sprawdzić czy obecny użytkownik ma role admin ? To wpisać $this->container->get('security.authorization_checker')->hasRole('ROLE_ADMIN') czy isGranted?
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Masz to w dokumentacji.
isGranted służy również do sprawdzania czy użytkowni jest w ogóle zalogowany. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 19:12 |