Download - PHP meetup#4 Godek
![Page 1: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/1.jpg)
WprowadzeniePrzykłady
Podsumowanie
Programowanie funkcyjne w PHP
Maciek Godek
{ fido : labs }
PHP3City Meetup#4, 06.12.2013
Maciek Godek Programowanie funkcyjne w PHP
![Page 2: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/2.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Czym jest programowanie funkcyjne?
Programowanie funkcyjne (FP) polega na:• unikaniu skutków ubocznych,• stosowaniu funkcji wyzszego rzedu.
Maciek Godek Programowanie funkcyjne w PHP
![Page 3: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/3.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Czym jest programowanie funkcyjne?
Programowanie funkcyjne (FP) polega na:• unikaniu skutków ubocznych,• stosowaniu funkcji wyzszego rzedu.
Maciek Godek Programowanie funkcyjne w PHP
![Page 4: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/4.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Czym jest programowanie funkcyjne?
Programowanie funkcyjne (FP) polega na:• unikaniu skutków ubocznych,• stosowaniu funkcji wyzszego rzedu.
Maciek Godek Programowanie funkcyjne w PHP
![Page 5: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/5.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sformułowanie problemu
Jaki problem chcemy rozwiazac?- Uczynic programowanie jak maksymalnie efektywnym, czyli:
• musiec jak najmniej pamietac, oraz• móc jak najwiecej wnioskowac.
Maciek Godek Programowanie funkcyjne w PHP
![Page 6: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/6.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sformułowanie problemu
Jaki problem chcemy rozwiazac?- Uczynic programowanie jak maksymalnie efektywnym, czyli:
• musiec jak najmniej pamietac, oraz• móc jak najwiecej wnioskowac.
Maciek Godek Programowanie funkcyjne w PHP
![Page 7: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/7.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sformułowanie problemu
Jaki problem chcemy rozwiazac?- Uczynic programowanie jak maksymalnie efektywnym, czyli:
• musiec jak najmniej pamietac, oraz• móc jak najwiecej wnioskowac.
Maciek Godek Programowanie funkcyjne w PHP
![Page 8: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/8.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sformułowanie problemu
Jaki problem chcemy rozwiazac?- Uczynic programowanie jak maksymalnie efektywnym, czyli:
• musiec jak najmniej pamietac, oraz• móc jak najwiecej wnioskowac.
Maciek Godek Programowanie funkcyjne w PHP
![Page 9: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/9.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sformułowanie problemu
Innymi słowy: uczynic program jak najbardziej czytelnym
Maciek Godek Programowanie funkcyjne w PHP
![Page 10: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/10.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sformułowanie problemu
Innymi słowy: uczynic program jak najbardziej czytelnym
Maciek Godek Programowanie funkcyjne w PHP
![Page 11: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/11.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sposoby na usprawnienie pracy z kodem
Pomysły:• korzystanie z Integrated Development Environment• uzywanie statycznej kontroli typów• stosowanie konwencji w nazewnictwie obiektów• ogólniej: przestrzeganie konwencji w sposobie uzycja
jezyka
Maciek Godek Programowanie funkcyjne w PHP
![Page 12: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/12.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sposoby na usprawnienie pracy z kodem
Pomysły:• korzystanie z Integrated Development Environment• uzywanie statycznej kontroli typów• stosowanie konwencji w nazewnictwie obiektów• ogólniej: przestrzeganie konwencji w sposobie uzycja
jezyka
Maciek Godek Programowanie funkcyjne w PHP
![Page 13: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/13.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sposoby na usprawnienie pracy z kodem
Pomysły:• korzystanie z Integrated Development Environment• uzywanie statycznej kontroli typów• stosowanie konwencji w nazewnictwie obiektów• ogólniej: przestrzeganie konwencji w sposobie uzycja
jezyka
Maciek Godek Programowanie funkcyjne w PHP
![Page 14: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/14.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sposoby na usprawnienie pracy z kodem
Pomysły:• korzystanie z Integrated Development Environment• uzywanie statycznej kontroli typów• stosowanie konwencji w nazewnictwie obiektów• ogólniej: przestrzeganie konwencji w sposobie uzycja
jezyka
Maciek Godek Programowanie funkcyjne w PHP
![Page 15: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/15.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Sposoby na usprawnienie pracy z kodem
Pomysły:• korzystanie z Integrated Development Environment• uzywanie statycznej kontroli typów• stosowanie konwencji w nazewnictwie obiektów• ogólniej: przestrzeganie konwencji w sposobie uzycja
jezyka
Maciek Godek Programowanie funkcyjne w PHP
![Page 16: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/16.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Konwencje w sposobie uzycia jezyka
Kilka popularnych konwencji:• notacja wegierska• metodologia OOP (hermetyzacja, enkapsulacja,
polimorfizm, dziedziczenie, ...)• programowanie funkcyjne
Maciek Godek Programowanie funkcyjne w PHP
![Page 17: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/17.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Konwencje w sposobie uzycia jezyka
Kilka popularnych konwencji:• notacja wegierska• metodologia OOP (hermetyzacja, enkapsulacja,
polimorfizm, dziedziczenie, ...)• programowanie funkcyjne
Maciek Godek Programowanie funkcyjne w PHP
![Page 18: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/18.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Konwencje w sposobie uzycia jezyka
Kilka popularnych konwencji:• notacja wegierska• metodologia OOP (hermetyzacja, enkapsulacja,
polimorfizm, dziedziczenie, ...)• programowanie funkcyjne
Maciek Godek Programowanie funkcyjne w PHP
![Page 19: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/19.jpg)
WprowadzeniePrzykłady
Podsumowanie
Czym jest programowanie funkcyjne?Dlaczego zainteresowac sie FP?
Konwencje w sposobie uzycia jezyka
Kilka popularnych konwencji:• notacja wegierska• metodologia OOP (hermetyzacja, enkapsulacja,
polimorfizm, dziedziczenie, ...)• programowanie funkcyjne
Maciek Godek Programowanie funkcyjne w PHP
![Page 20: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/20.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Zagadka: co robi ponizszy kod?
function złoncz($słowa) {$wynik = ”;$n = count($słowa);if($n < 1) { return $wynik; }$biezace = reset($słowa);for($i = 0; $i < $n; $i++) {
$wynik .= $biezace;if($i < $n-2) { $wynik .= ’, ’; }elseif($i == $n-2) { $wynik .= ’ i ’; }$biezace = next($słowa);
}return $wynik;
}Maciek Godek Programowanie funkcyjne w PHP
![Page 21: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/21.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Zagadka: co robi ponizszy kod?
function złoncz($słowa) {$wynik = ”;$n = count($słowa);if($n < 1) { return $wynik; }$biezace = reset($słowa);for($i = 0; $i < $n; $i++) {
$wynik .= $biezace;if($i < $n-2) { $wynik .= ’, ’; }elseif($i == $n-2) { $wynik .= ’ i ’; }$biezace = next($słowa);
}return $wynik;
}Maciek Godek Programowanie funkcyjne w PHP
![Page 22: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/22.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Rozwiazanie: łaczenie słów naturalnymi spójnikami
Rozwiazanie: złacza słowa spójnikami, w taki sposób, w jakiłaczymy słowa w mowie potocznej, tzn. sklejamy wszystkiesłowa przecinkami, za wyjatkiem dwóch ostatnich, któresklejamy spójnikiem ’i’.
Maciek Godek Programowanie funkcyjne w PHP
![Page 23: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/23.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Przykład uzycia
złaczenie([]) = ”;złaczenie([’Ola’]) = ’Ola’;złaczenie([’Ola’, ’Ala’]) = ’Ola i Ala’;złaczenie([’Ola’, ’Ala’, ’Ula’]) = ’Ola, Ala i Ula’;złaczenie([’Ola’, ’Ala’, ’Ula’, ’Ela’])
= ’Ola, Ala, Ula i Ela’;
Maciek Godek Programowanie funkcyjne w PHP
![Page 24: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/24.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Abstrakcja!
złaczenie([]) = ”;złaczenie([$a]) = $a;złaczenie([$a, $b]) = $a . ’ i ’ .$b;złaczenie([$a, $b, $c, ...])
= $a . ’, ’ . złaczenie([$b, $c, ...]);
Maciek Godek Programowanie funkcyjne w PHP
![Page 25: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/25.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
W strone PHP
function złaczone($słowa) { // marzenmatch($słowa) {case []:
return ”;case [$a]:
return $a;case [$a, $b]:
return $a . ’ i ’ . $b;case [$a, $b, $c, ...]:
return $a . ’, ’. złaczone([$b, $c, ...]);
}}
Maciek Godek Programowanie funkcyjne w PHP
![Page 26: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/26.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Faktyczna implementacja w PHP
function złaczone($słowa) {switch(count($słowa)) {case 0:
return ”;case 1:
return array_pop($a);default:
$ostatnie = array_pop($słowa);return implode(’, ’, $słowa)
. ’ i ’ . $ostatnie;}
}
Maciek Godek Programowanie funkcyjne w PHP
![Page 27: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/27.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Kolejna zagadka!
Jak posortowac tablice stringóww PHP według ich długosci?
Maciek Godek Programowanie funkcyjne w PHP
![Page 28: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/28.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Kolejna zagadka!
Jak posortowac tablice stringóww PHP według ich długosci?
Maciek Godek Programowanie funkcyjne w PHP
![Page 29: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/29.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Pierwsza próba:
usort($tablica, function($a, $b) {return length($a) - length($b);
});
Pytanie: czy powyzsze wywołanie posortuje tablicerosnaco, czy malejaco?
Maciek Godek Programowanie funkcyjne w PHP
![Page 30: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/30.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Pierwsza próba:
usort($tablica, function($a, $b) {return length($a) - length($b);
});
Pytanie: czy powyzsze wywołanie posortuje tablicerosnaco, czy malejaco?
Maciek Godek Programowanie funkcyjne w PHP
![Page 31: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/31.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Druga próba:
usort($tablica, ascending(’length’)) ,
gdzie
function ascending($property) {return function($a, $b) use($property) {
return $property($a) - $property($b);};
}
Maciek Godek Programowanie funkcyjne w PHP
![Page 32: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/32.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Druga próba:
usort($tablica, ascending(’length’)) ,
gdzie
function ascending($property) {return function($a, $b) use($property) {
return $property($a) - $property($b);};
}
Maciek Godek Programowanie funkcyjne w PHP
![Page 33: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/33.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Sortowanie malejaco
function descending ($prop) {return function($a, $b) use($prop) {
return -call_user_func(ascending($prop),$a, $b);
};}
jezeli is_callable($f),to zapis call_user_func($f, $argumenty ...)jest równowazny zapisowi $f($argumenty ...)
Maciek Godek Programowanie funkcyjne w PHP
![Page 34: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/34.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Sortowanie malejaco
function descending ($prop) {return function($a, $b) use($prop) {
return -call_user_func(ascending($prop),$a, $b);
};}
jezeli is_callable($f),to zapis call_user_func($f, $argumenty ...)jest równowazny zapisowi $f($argumenty ...)
Maciek Godek Programowanie funkcyjne w PHP
![Page 35: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/35.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Popularne funkcje wyzszego rzedu
• call_user_func_array($function, $array)
• array_map($callback, $a1, $a2, ...)
• array_filter($array, $callback)
• array_reduce($callback, $array [, $init])
Maciek Godek Programowanie funkcyjne w PHP
![Page 36: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/36.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Popularne funkcje wyzszego rzedu
• call_user_func_array($function, $array)
• array_map($callback, $a1, $a2, ...)
• array_filter($array, $callback)
• array_reduce($callback, $array [, $init])
Maciek Godek Programowanie funkcyjne w PHP
![Page 37: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/37.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Popularne funkcje wyzszego rzedu
• call_user_func_array($function, $array)
• array_map($callback, $a1, $a2, ...)
• array_filter($array, $callback)
• array_reduce($callback, $array [, $init])
Maciek Godek Programowanie funkcyjne w PHP
![Page 38: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/38.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Popularne funkcje wyzszego rzedu
• call_user_func_array($function, $array)
• array_map($callback, $a1, $a2, ...)
• array_filter($array, $callback)
• array_reduce($callback, $array [, $init])
Maciek Godek Programowanie funkcyjne w PHP
![Page 39: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/39.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 1
Zastosowanie call_user_func_array – tworzeniesynonimów:
function apply() {return call_user_func_array(
’call_user_func_array’,func_get_args()
);}
Maciek Godek Programowanie funkcyjne w PHP
![Page 40: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/40.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 1
Zastosowanie call_user_func_array – tworzeniesynonimów:
function apply() {return call_user_func_array(
’call_user_func_array’,func_get_args()
);}
Maciek Godek Programowanie funkcyjne w PHP
![Page 41: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/41.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 2
Zastosowanie call_user_func_array – tworzeniesynonimów:
function map() {return apply(’array_map’, func_get_args());
}
function filter() {return apply(’array_filter’, func_get_args());
}
function reduce() {return apply(’array_reduce’, func_get_args());
}Maciek Godek Programowanie funkcyjne w PHP
![Page 42: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/42.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 2
Zastosowanie call_user_func_array – tworzeniesynonimów:
function map() {return apply(’array_map’, func_get_args());
}
function filter() {return apply(’array_filter’, func_get_args());
}
function reduce() {return apply(’array_reduce’, func_get_args());
}Maciek Godek Programowanie funkcyjne w PHP
![Page 43: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/43.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 2
Zastosowanie call_user_func_array – tworzeniesynonimów:
function map() {return apply(’array_map’, func_get_args());
}
function filter() {return apply(’array_filter’, func_get_args());
}
function reduce() {return apply(’array_reduce’, func_get_args());
}Maciek Godek Programowanie funkcyjne w PHP
![Page 44: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/44.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 2
Zastosowanie call_user_func_array – tworzeniesynonimów:
function map() {return apply(’array_map’, func_get_args());
}
function filter() {return apply(’array_filter’, func_get_args());
}
function reduce() {return apply(’array_reduce’, func_get_args());
}Maciek Godek Programowanie funkcyjne w PHP
![Page 45: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/45.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 3
Zastosowanie call_user_func_array do tworzeniasynonimów – problemy:
• brak argumentów formalnych – utrudnia współprace z IDE• brak obsługi referencjifunction pop() {
return apply(’array_pop’, func_get_args());} // zle!!!
• generuje narzuty wywołan (kod działa wolniej)• a co z obsługa argumentów domyslnych?
Maciek Godek Programowanie funkcyjne w PHP
![Page 46: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/46.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 3
Zastosowanie call_user_func_array do tworzeniasynonimów – problemy:
• brak argumentów formalnych – utrudnia współprace z IDE• brak obsługi referencjifunction pop() {
return apply(’array_pop’, func_get_args());} // zle!!!
• generuje narzuty wywołan (kod działa wolniej)• a co z obsługa argumentów domyslnych?
Maciek Godek Programowanie funkcyjne w PHP
![Page 47: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/47.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 3
Zastosowanie call_user_func_array do tworzeniasynonimów – problemy:
• brak argumentów formalnych – utrudnia współprace z IDE• brak obsługi referencjifunction pop() {
return apply(’array_pop’, func_get_args());} // zle!!!
• generuje narzuty wywołan (kod działa wolniej)• a co z obsługa argumentów domyslnych?
Maciek Godek Programowanie funkcyjne w PHP
![Page 48: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/48.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 3
Zastosowanie call_user_func_array do tworzeniasynonimów – problemy:
• brak argumentów formalnych – utrudnia współprace z IDE• brak obsługi referencjifunction pop() {
return apply(’array_pop’, func_get_args());} // zle!!!
• generuje narzuty wywołan (kod działa wolniej)• a co z obsługa argumentów domyslnych?
Maciek Godek Programowanie funkcyjne w PHP
![Page 49: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/49.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 3
Zastosowanie call_user_func_array do tworzeniasynonimów – problemy:
• brak argumentów formalnych – utrudnia współprace z IDE• brak obsługi referencjifunction pop() {
return apply(’array_pop’, func_get_args());} // zle!!!
• generuje narzuty wywołan (kod działa wolniej)• a co z obsługa argumentów domyslnych?
Maciek Godek Programowanie funkcyjne w PHP
![Page 50: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/50.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 3
Zastosowanie call_user_func_array do tworzeniasynonimów – problemy:
• brak argumentów formalnych – utrudnia współprace z IDE• brak obsługi referencjifunction pop() {
return apply(’array_pop’, func_get_args());} // zle!!!
• generuje narzuty wywołan (kod działa wolniej)• a co z obsługa argumentów domyslnych?
Maciek Godek Programowanie funkcyjne w PHP
![Page 51: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/51.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
call_user_func_array – synonimy 4
Zagadka: jak stworzyc synonim dla func_get_args?
Maciek Godek Programowanie funkcyjne w PHP
![Page 52: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/52.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_map – przykład
map: odwzorowanie zbioru funkcja. Na przykład, chcac usunacbiałe znaki ze stringów bedacych elementami tablicy przypomocy funkcji trim, mozemy napisac:
$ogolone_napisy = map(’trim’, $napisy)
Maciek Godek Programowanie funkcyjne w PHP
![Page 53: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/53.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_map – przykład
map: odwzorowanie zbioru funkcja. Na przykład, chcac usunacbiałe znaki ze stringów bedacych elementami tablicy przypomocy funkcji trim, mozemy napisac:
$ogolone_napisy = map(’trim’, $napisy)
Maciek Godek Programowanie funkcyjne w PHP
![Page 54: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/54.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_map – zagadka
Zagadka: Chcemy wiedziec, jaka jest najwieksza długoscstringu w danej tablicy (stringów).
Maciek Godek Programowanie funkcyjne w PHP
![Page 55: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/55.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_map – rozwiazanie
Rozwiazanie: max(map(’length’, $tablica))
Uwaga! To jest po prostu zdanie „najwieksza sposród długoscielementów w $tablicy” wyrazone w PHP!
Maciek Godek Programowanie funkcyjne w PHP
![Page 56: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/56.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_map – rozwiazanie
Rozwiazanie: max(map(’length’, $tablica))
Uwaga! To jest po prostu zdanie „najwieksza sposród długoscielementów w $tablicy” wyrazone w PHP!
Maciek Godek Programowanie funkcyjne w PHP
![Page 57: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/57.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_map – ciekawostka
Ciekawostka:map(’f’, map(’g’, $a)) = map(’f’ ◦ ’g’, $a),gdzie symbol ◦ oznacza złozenie funkcji, tj. f (g(x))
Zadanie: napisz funkcje ’compose’, która pobiera jakoargumenty funkcje jednoargumentowe i zwraca funkcje bedacaich złozeniem
Maciek Godek Programowanie funkcyjne w PHP
![Page 58: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/58.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_map – ciekawostka
Ciekawostka:map(’f’, map(’g’, $a)) = map(’f’ ◦ ’g’, $a),gdzie symbol ◦ oznacza złozenie funkcji, tj. f (g(x))
Zadanie: napisz funkcje ’compose’, która pobiera jakoargumenty funkcje jednoargumentowe i zwraca funkcje bedacaich złozeniem
Maciek Godek Programowanie funkcyjne w PHP
![Page 59: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/59.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_filter – przykład
filter: odsiewanie elementów spełniajacych dane kryterium,np. chcemy znalezc wszystkie liczby z danej tablicy,mieszczace sie w przedziale (2, 5)
$liczby_2_5 = filter($rózne_liczby, function($x) {return (2 < $x) && ($x < 5);
});
Maciek Godek Programowanie funkcyjne w PHP
![Page 60: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/60.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_filter – przykład
filter: odsiewanie elementów spełniajacych dane kryterium,np. chcemy znalezc wszystkie liczby z danej tablicy,mieszczace sie w przedziale (2, 5)
$liczby_2_5 = filter($rózne_liczby, function($x) {return (2 < $x) && ($x < 5);
});
Maciek Godek Programowanie funkcyjne w PHP
![Page 61: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/61.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_filter – przykład
filter: odsiewanie elementów spełniajacych dane kryterium,np. chcemy znalezc wszystkie liczby z danej tablicy,mieszczace sie w przedziale (2, 5)
$liczby_2_5 = filter($rózne_liczby, function($x) {return (2 < $x) && ($x < 5);
});
Maciek Godek Programowanie funkcyjne w PHP
![Page 62: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/62.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_reduce – wzmianka
reduce: funkcyjna bestiazastosowanie: uogólnianie dwuargumentowych działanłacznych na dowolna ilosc argumentów
Maciek Godek Programowanie funkcyjne w PHP
![Page 63: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/63.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
array_reduce – wzmianka
reduce: funkcyjna bestiazastosowanie: uogólnianie dwuargumentowych działanłacznych na dowolna ilosc argumentów
Maciek Godek Programowanie funkcyjne w PHP
![Page 64: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/64.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Składnia $_
Problem: mamy tablice obiektów. Chcielibysmy miec tablicerzutów tych obiektów na ich pewne własnosci, które mozemyotrzymac przez wywołanie odpowiedniej metody.Klasyczne rozwiazanie:
$rzuty = [];foreach($obiekty as $obiekt) {
$rzuty[] = $obiekt->pobierzWłasnosc();}
Funkcyjne rozwiazanie:
global $_; // drobne oszustwo$rzuty = map($_->pobierzWłasnosc(), $obiekty);
Maciek Godek Programowanie funkcyjne w PHP
![Page 65: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/65.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Składnia $_
Problem: mamy tablice obiektów. Chcielibysmy miec tablicerzutów tych obiektów na ich pewne własnosci, które mozemyotrzymac przez wywołanie odpowiedniej metody.Klasyczne rozwiazanie:
$rzuty = [];foreach($obiekty as $obiekt) {
$rzuty[] = $obiekt->pobierzWłasnosc();}
Funkcyjne rozwiazanie:
global $_; // drobne oszustwo$rzuty = map($_->pobierzWłasnosc(), $obiekty);
Maciek Godek Programowanie funkcyjne w PHP
![Page 66: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/66.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Składnia $_
Problem: mamy tablice obiektów. Chcielibysmy miec tablicerzutów tych obiektów na ich pewne własnosci, które mozemyotrzymac przez wywołanie odpowiedniej metody.Klasyczne rozwiazanie:
$rzuty = [];foreach($obiekty as $obiekt) {
$rzuty[] = $obiekt->pobierzWłasnosc();}
Funkcyjne rozwiazanie:
global $_; // drobne oszustwo$rzuty = map($_->pobierzWłasnosc(), $obiekty);
Maciek Godek Programowanie funkcyjne w PHP
![Page 67: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/67.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Składnia $_
Problem: mamy tablice obiektów. Chcielibysmy miec tablicerzutów tych obiektów na ich pewne własnosci, które mozemyotrzymac przez wywołanie odpowiedniej metody.Klasyczne rozwiazanie:
$rzuty = [];foreach($obiekty as $obiekt) {
$rzuty[] = $obiekt->pobierzWłasnosc();}
Funkcyjne rozwiazanie:
global $_; // drobne oszustwo$rzuty = map($_->pobierzWłasnosc(), $obiekty);
Maciek Godek Programowanie funkcyjne w PHP
![Page 68: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/68.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Składnia $_
Inny problem: sortowanie tablicy tablic wzgledem danejkolumny:usort($array, ascending($_[’column’]));
Maciek Godek Programowanie funkcyjne w PHP
![Page 69: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/69.jpg)
WprowadzeniePrzykłady
Podsumowanie
SpójnikiSortowanie tablicyInne funkcje wyzszego rzeduŁaczenie OOP i FP
Składnia $_
Inny problem: sortowanie tablicy tablic wzgledem danejkolumny:usort($array, ascending($_[’column’]));
Maciek Godek Programowanie funkcyjne w PHP
![Page 70: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/70.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 71: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/71.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 72: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/72.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 73: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/73.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 74: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/74.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 75: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/75.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 76: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/76.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 77: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/77.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 78: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/78.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 79: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/79.jpg)
WprowadzeniePrzykłady
Podsumowanie
Podsumowanie
Zalety FP:• łatwiejsza analiza kodu• dobra kompozycjonalnosc (nie trzeba sie przejmowac
kopiowaniem i referencjami)• bardzo naturalne testowanie• uproszczona paralelizacja
Wady FP:• nie wszedzie daje sie stosowac• brak wsparcia ze strony narzedzi• kod moze działac niewydajnie
Maciek Godek Programowanie funkcyjne w PHP
![Page 80: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/80.jpg)
WprowadzeniePrzykłady
Podsumowanie
Lektury
Wpiszcie sobie w Google:John Carmack Functional Programming
Ksiazki:„Struktura i Interpretacja Programów Komputerowych”,H. Abelson, G. Sussman
Maciek Godek Programowanie funkcyjne w PHP
![Page 81: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/81.jpg)
WprowadzeniePrzykłady
Podsumowanie
Lektury
Wpiszcie sobie w Google:John Carmack Functional Programming
Ksiazki:„Struktura i Interpretacja Programów Komputerowych”,H. Abelson, G. Sussman
Maciek Godek Programowanie funkcyjne w PHP
![Page 82: PHP meetup#4 Godek](https://reader030.vdocuments.mx/reader030/viewer/2022032620/55cae5dbbb61eb3e788b47fc/html5/thumbnails/82.jpg)
WprowadzeniePrzykłady
Podsumowanie
Dziekuje!
https://joind.in/[email protected]
Maciek Godek Programowanie funkcyjne w PHP