Encja w Symfony |
Encja w Symfony |
23.05.2015, 16:55:07
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ć? |
|
|
23.05.2015, 17:18:23
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 -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
23.05.2015, 17:30:50
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ń Ot, taka drobnostka, która uprzyjemnia korzystanie z API
-------------------- ★Mój blog || Okiem krytyka★
|
|
|
23.05.2015, 18:13:29
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?
|
|
|
23.05.2015, 18:18:05
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.
-------------------- |
|
|
23.05.2015, 19:21:27
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 ? |
|
|
23.05.2015, 20:54:24
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ń 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() |
|
|
24.05.2015, 12:31:27
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
|
|
|
25.05.2015, 06:37:37
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
|
|
|
25.05.2015, 06:43:36
Post
#10
|
|
Grupa: Zarejestrowani Postów: 144 Pomógł: 0 Dołączył: 22.03.2015 Ostrzeżenie: (0%) |
Dokładnie tak.
|
|
|
25.05.2015, 07:16:36
Post
#11
|
|
Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) |
|
|
|
25.05.2015, 08:46:32
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 -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
25.05.2015, 15:44:22
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?
|
|
|
26.05.2015, 08:55:04
Post
#14
|
|
Grupa: Zarejestrowani Postów: 3 033 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.
|
|
|
26.05.2015, 09:00:54
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 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 -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
26.05.2015, 19:02:23
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?
|
|
|
26.05.2015, 20:38:56
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. -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
Wersja Lo-Fi | Aktualny czas: 26.04.2024 - 09:40 |