├── CONTRIBUTING.md └── README.md /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | Please ensure your pull request adheres to the following guidelines: 3 | 4 | * Please search and make sure if there aren't enough resources about your suggestion subject. 5 | * More than one resource about a specific subject are welcome, but be careful with of exaggerations. 6 | * Try to following the logical order of the items. 7 | * Make sure the resource is in English and well written. 8 | * Use the following format for resources: \[TITLE\]\(LINK\) - DESCRIPTION. 9 | * Use characters like `►` and `$` to indicate videos and paid contents in resource title. For example: **Object-Oriented Design in PHP (►$)**. 10 | * Please make an individual commit for each suggestion in a pull request. 11 | * Keep descriptions short and simple. 12 | * Check your spelling and grammar. 13 | * End all descriptions with a full stop/period. 14 | * All suggestions will be analyzed and there is no guarantee that will be included. 15 | 16 | Thank you for your suggestions! -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Getting Started with Functional Programming in PHP 2 | A collection of resources to introduce functional programming for PHP programmers. Please see [CONTRIBUTING](CONTRIBUTING.md) for details and contribute. ;) 3 | 4 | - [Tutorials](#tutorials) 5 | - [Videos](#videos) 6 | - [Slides](#slides) 7 | - [Libraries](#libraries) 8 | - [Other Languages](#other-languages) 9 | - [People](#people) 10 | 11 | ## Tutorials 12 | *Functional programming tutorials in PHP.* 13 | 14 | * [Paradigm Soup by Anthony Ferrara](http://blog.ircmaxell.com/2012/11/programming-with-anthony-paradigm-soup.html) - Tutorial that explains the difference between programming paradigms. 15 | * [Functional Programming in PHP by PHP The Right Way](http://www.phptherightway.com/pages/Functional-Programming.html) - Section about functional programming in PHP The Right Way. 16 | * [Functional Programming in PHP by Tuts Plus](http://code.tutsplus.com/tutorials/functional-programming-in-php--net-35043) - Tutorial about functional programming in PHP. 17 | * [Functional Programming in PHP by Sitepoint](http://www.sitepoint.com/functional-programming-and-php/) - Another tutorial about functional programming in PHP. 18 | * [Functional Programming in PHP by Liip](https://blog.liip.ch/archive/2014/11/05/functional-programming-in-php.html) - Another tutorial about functional programming in PHP. 19 | * [What are PHP Lambdas and Closures?](http://culttt.com/2013/03/25/what-are-php-lambdas-and-closures/) - Tutorial that explains what is lambdas and closures. 20 | * [On PHP 5.3, Lambda Functions, and Closures](http://fabien.potencier.org/article/17/on-php-5-3-lambda-functions-and-closures) - Another tutorial about lambdas and closures. 21 | * [Currying vs Partial Application](http://allthingsphp.blogspot.com.br/2012/02/currying-vs-partial-application.html) - Tutorial that explains the difference between currying and partials. 22 | * [Using Partial Application in PHP](http://eddmann.com/posts/using-partial-application-in-php/) - Tutorial about partial functions in PHP. 23 | * [Memoization or function cache](https://www.simonholywell.com/post/2015/05/memoization-or-function-cache/) - Tutorial about memoization in PHP. 24 | * [Taking Monads to OOP PHP](http://blog.ircmaxell.com/2013/07/taking-monads-to-oop-php.html) - Tutorial about monads in PHP. 25 | * [Functional programming with Monads in PHP](http://the-matrix.github.io/php/functional-programming-monads/) - Another tutorial about monads in PHP. 26 | * [PHP Functions](http://php.net/manual/en/language.functions.php) - Documentation of how functions work in PHP. 27 | * [Anonymous Functions](http://php.net/manual/en/functions.anonymous.php) - Documentation of how anonymous functions works in PHP. 28 | * [Array Map](http://php.net/manual/en/function.array-map.php), [Array Filter](http://php.net/manual/en/function.array-filter.php) e [Array Reduce](http://php.net/manual/en/function.array-reduce.php) - Documentation about map, filter and reduce functions in PHP. 29 | * [Type Hinting - Difference between Closure and Callable](http://stackoverflow.com/questions/29730720/php-type-hinting-difference-between-closure-and-callable) - Difference between Closure and Callable typehints in PHP. 30 | * [Callable](http://php.net/manual/en/language.types.callable.php) and [is_callable](http://php.net/manual/en/function.is-callable.php) - Documentation about Callable typehint and is_callable function. 31 | * [Closure Object Binding in PHP 5.4](https://www.christophh.net/2011/10/26/closure-object-binding-in-php-54/) - Tutorial about closure object binding in PHP. 32 | * [PHP Function Objects](https://www.simonholywell.com/post/2015/04/php-function-objects/) - Tutorial about function objects in PHP. 33 | * [Namespace PHP functions](https://www.simonholywell.com/post/2015/08/namespace-php-functions/) - Tutorial about namespaces and functions in PHP. 34 | 35 | ## Videos 36 | *Videos about functional programming in PHP.* 37 | 38 | * [Functional PHP by Larry Garfield](https://www.youtube.com/watch?v=M3_xnTK6-pA) - Fantastic talk about functional programming in PHP. 39 | * [Go Mad for Monads](https://www.youtube.com/watch?v=F5fUgXFSH0Q) - Talk about monads in PHP. 40 | 41 | ## Slides 42 | *Slides about functional programming in PHP.* 43 | 44 | * [Functional PHP](https://www.palantir.net/presentations/phptek14-functional-php/#/) - Fantastic talk about functional programming in PHP. 45 | 46 | ## Libraries 47 | *Libraries about functional programming in PHP and related concepts.* 48 | 49 | * [Iter](https://github.com/nikic/iter) 50 | * [Functional PHP](https://github.com/lstrojny/functional-php) 51 | * [Underscore.php](https://github.com/Anahkiasen/underscore-php) 52 | * [Underscore.php](https://github.com/brianhaveri/Underscore.php) 53 | * [php-functional](https://github.com/widmogrod/php-functional) 54 | * [monad-php](https://github.com/ircmaxell/monad-php) 55 | * [Partial](https://github.com/reactphp/partial) 56 | * [Promise](https://github.com/reactphp/promise) 57 | * [Compose](https://github.com/igorw/compose) 58 | * [transducers-php](https://github.com/mtdowling/transducers.php) 59 | * [Pramda](https://github.com/kapolos/pramda) 60 | 61 | ## Other Languages 62 | *Some fantastic functional programming languages that you should learn.* 63 | 64 | * [Clojure](http://clojure.org/) 65 | * [Elixir](http://elixir-lang.org/) 66 | * [Erlang](http://www.erlang.org/) 67 | * [F#](http://fsharp.org/) 68 | * [Haskell](https://www.haskell.org/) 69 | * [Lisp](https://en.wikipedia.org/wiki/Lisp_(programming_language)) 70 | * [OCaml](https://ocaml.org/) 71 | * [Scala](http://www.scala-lang.org/) 72 | 73 | ## People 74 | *Some fantastic and influential developers that talk about functional programming, PHP and other languages.* 75 | 76 | * [Anthony Ferrara](https://twitter.com/ircmaxell) - Co-author of PHP Internals book and Developer Advocate for Google. 77 | * [Benjamin Eberlei](https://twitter.com/beberlei) - Project-leader of Doctrine ORM and contributor to the Symfony2 Framework. 78 | * [Igor Wiedler](https://twitter.com/igorwhiletrue) - Creator of Silex micro-framework and open-source contributor to projects like Symfony and Composer. 79 | * [Joe Armstrong](https://twitter.com/joeerl) - Creator of Erlang language. 80 | * [José Valim](https://twitter.com/josevalim) - Creator of Elixir language. 81 | * [Larry Garfield](https://twitter.com/Crell) - PHP developer and core contributor of Drupal. 82 | * [Lars Strojny](https://twitter.com/lstrojny) - PHP developer and creator of Functional PHP library. 83 | * [Nikita Popov](https://twitter.com/nikita_ppv) - Co-author of PHP Internals book, open source contributor and creator of PHP Parser library. 84 | * [Simon Holywell](https://twitter.com/Treffynnon) - Co-author of PHP Internals book, open source contributor and creator of PHP Parser library. 85 | --------------------------------------------------------------------------------