Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcje i klasy anoninowe
StreetFighter
post 4.05.2019, 09:37:15
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 2
Dołączył: 17.04.2017
Skąd: 127.0.0.1

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


Zastanawiam się do czego mogą służyć klasy i funkcje anonimowe, szukam ale nie mogę zrozumieć co mogę osiągnąć dzięki nim czego nie da się osiągnąć bez nich 😁
Go to the top of the page
+Quote Post
Tomplus
post 4.05.2019, 09:58:45
Post #2





Grupa: Zarejestrowani
Postów: 1 493
Pomógł: 178
Dołączył: 20.03.2005
Skąd: Będzin

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


Funkcje i klasy anonimowe używasz tam gdzie nie ma potrzeby tworzenia osobnej funkcji, głównie gdy

  1. function isEven($val) {
  2. return $val % 2 == 0;
  3. }
  4. $arr_even = array_filter($arr, 'isEven');
  5.  
  6. function square($val) {
  7. return $val * $val;
  8. }
  9. $arr_square = array_map('square', $arr);


zamiast tego mozesz użyć coś takiego:

  1. $arr = range(0, 10);
  2. $arr_even = array_filter($arr, function($val) {
  3. return $val % 2 == 0;
  4. });
  5.  
  6. $arr_square = array_map(function($val) {
  7. return $val * $val;
  8. }, $arr);


Oczywiście to są proste przykłady, ale dzięki temu nie musisz przejmować się że nazwa funkcji bądź klasy będą powtarzalne w przestrzeni nazw.

W manualu możesz jeszcze coś takiego spotkać:


  1. $greet = function($name)
  2. {
  3. printf("Hello %s\r\n", $name);
  4. };
  5.  
  6. $greet('World');
  7. $greet('PHP');


Czyli coś w stylu zmiennej w zmiennej.

Większość rzeczy korzysta się gdy zachodzi taka potrzeba, więc lepiej mieć narzędzie, niż nie mieć go w ogóle.

materiały do poczytania:
https://www.php.net/manual/en/functions.anonymous.php
https://stackoverflow.com/questions/2412299...unctions-in-php


Go to the top of the page
+Quote Post
viking
post 4.05.2019, 12:03:13
Post #3





Grupa: Zarejestrowani
Postów: 5 394
Pomógł: 916
Dołączył: 30.08.2006

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


Przy okazji może Cię też zainteresować metoda __invoke w klasach. Bardzo często jest wykorzystywana w kontrolerach stanowiących pojedynczą odpowiedzialność. W sumie coraz częściej się w ten sposób pisze. Tak samo, obecnie są już klasy anonimowe.


--------------------
Go to the top of the page
+Quote Post
StreetFighter
post 4.05.2019, 19:14:43
Post #4





Grupa: Zarejestrowani
Postów: 25
Pomógł: 2
Dołączył: 17.04.2017
Skąd: 127.0.0.1

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


dzięki za pomoc, troszkę skumałem o co chodzi, także już sobie poradzę
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: 15.11.2019 - 03:39