Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Co oznacza taki zapis ClassName::class
piekarz
post 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ę.
Go to the top of the page
+Quote Post
Pyton_000
post 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 smile.gif http://php.net/manual/en/language.oop5.constants.php
Go to the top of the page
+Quote Post
piekarz
post 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.
Go to the top of the page
+Quote Post
viking
post 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%)
-----


https://translate.googleusercontent.com/tra...yJUIM2j7XRX41BA


--------------------
Go to the top of the page
+Quote Post
piekarz
post 7.12.2018, 20:06:24
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 23.08.2011

Ostrzeżenie: (0%)
-----


Cytat(viking @ 7.12.2018, 19:32:54 ) *

Mało śmieszne :/
Jak zwykle wychodzi masło maślane.

Ten post edytował piekarz 7.12.2018, 20:06:51
Go to the top of the page
+Quote Post
viking
post 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?


--------------------
Go to the top of the page
+Quote Post
piekarz
post 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:

  1. Symfony\Bundle\FrameworkBundle\FrameworkBundle::class

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ć.
Go to the top of the page
+Quote Post
viking
post 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.


--------------------
Go to the top of the page
+Quote Post
piekarz
post 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?
Go to the top of the page
+Quote Post
viking
post 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/


--------------------
Go to the top of the page
+Quote Post
piekarz
post 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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 17.04.2024 - 00:06