[PHP]Co oznacza taki zapis ClassName::class |
[PHP]Co oznacza taki zapis ClassName::class |
7.12.2018, 18:44:46
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 23.08.2011 Ostrzeżenie: (0%) |
Witam.
Jak w tytule. Zarówno w symfony jak i laravel często widzę taki zapis (przeważnie w serviceContainer ale nie tylko). Chciałbym się w końcu dowiedzieć jak się taki zapis nazywa i co to robi. Dziękuję. |
|
|
7.12.2018, 18:48:28
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Miłej lektury http://php.net/manual/en/language.oop5.constants.php
|
|
|
7.12.2018, 19:19:23
Post
#3
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 23.08.2011 Ostrzeżenie: (0%) |
A coś po polsku? Jeszcze mój angielski nie jest na takim poziomie abym sobie swobodnie czytał takie skomplikowane zagadnienia.
|
|
|
7.12.2018, 19:32:54
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
-------------------- |
|
|
7.12.2018, 20:06:24
Post
#5
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 23.08.2011 Ostrzeżenie: (0%) |
Mało śmieszne :/ Jak zwykle wychodzi masło maślane. Ten post edytował piekarz 7.12.2018, 20:06:51 |
|
|
7.12.2018, 20:20:05
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Cytat Stała specjalna ::class jest dostępna od wersji PHP 5.5.0 i pozwala na w pełni kwalifikowane rozwiązywanie nazw klas podczas kompilacji, jest to przydatne w przypadku klas z przypisanymi nazwami: Przykład # 3 Przykład klasy Namespaced :: class <?php namespace foo { class bar { } echo bar ::class; // foo\bar } ?> Akurat bardzo czytelnie przetłumaczone. Zresztą naprawdę tych 5 linii kodu nie rozumiesz? -------------------- |
|
|
7.12.2018, 20:39:51
Post
#7
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 23.08.2011 Ostrzeżenie: (0%) |
Kod rozumiem, ale tego nie rozumiem:
Cytat pozwala na w pełni kwalifikowane rozwiązywanie nazw klas podczas kompilacji, jest to przydatne w przypadku klas z przypisanymi nazwami: I tak samo w symfony nie rozumiem po co w pliku "config/bundle.php" mam zapisy typu:
Co mi to daje? Jak ja gdybym chciał coś własnego napisać mogę to wykorzystać. Czy to jest takie proste i oczywiste że nigdzie u polskich blogerów php czy kursach nie widziałem wpisów na ten temat, tylko ja w zły sposób o tym myślę i dlatego nie mogę zaskoczyć. |
|
|
7.12.2018, 21:15:31
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Za czasów prehistorycznych żeby wyciągnąć coś z kontenerów posługiwano się prostymi nazwami typu aaa lub ręcznie pisało \A\B\C jako string. Powodowało to możliwość wystąpienia błędu i eliminowało podpowiadanie kodu w edytorach. Dzięki ::class masz zwróconą pełną nazwę klasy która niezależnie jak ją podstawisz np przez różnorakie łączenie definicji NS, zawsze będzie na to samo wskazywało.
-------------------- |
|
|
8.12.2018, 10:32:19
Post
#9
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 23.08.2011 Ostrzeżenie: (0%) |
Czyli jeśli dobrze rozumiem można w łatwy sposób później stworzyć instancje danej klasy na podstawie zwróconego tego stringa czy tak?
|
|
|
8.12.2018, 10:34:11
Post
#10
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Na symfony tak tego nie widać. Zobacz zenda
https://docs.zendframework.com/zend-service...er/quick-start/ -------------------- |
|
|
8.12.2018, 19:31:57
Post
#11
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 23.08.2011 Ostrzeżenie: (0%) |
Chyba rozumiem, chyba. Dzięki za pomoc.
|
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 03:39 |