awesome-php/awesome-php.md

344 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Awesome PHP
A list of amazingly awesome PHP libraries, resources and shiny things.
## Composer
* [Composer](http://getcomposer.org/)/[Packagist](http://packagist.org/) - A package and dependency manager.
* [Composer Installers](https://github.com/composer/installers) - A multi framework Composer library installer.
## Composer Related
* [Satis](https://github.com/composer/satis) - A static Composer repository generator.
* [Composition](https://github.com/bamarni/composition) - A library to check your Composer environment at runtime.
* [Poser](https://github.com/FrenkyNet/Poser) - A Composer class aliasing library.
* [Version](https://github.com/kherge/Version) - A parsing and comparison library for semantic versioning.
* [NameSpacer](https://github.com/ralphschindler/Namespacer) - A library to convert from underscores to namespaces.
* [Patch Installer](https://github.com/goatherd/patch-installer) - A library to install patches using Composer.
## Frameworks
* [Symfony2](http://symfony.com/) - A framework comprised of individual components.
* [Knp RAD Bundle](http://rad.knplabs.com/) - A Rapid Application Development (RAD) bundle for Symfony 2.
* [Zend Framework 2](http://framework.zend.com) - Another framework comprised of individual components.
* [Laravel 4](https://github.com/laravel/framework) - A simple PHP framework.
* [Lithium](http://lithify.me/) - Another framework of components.
## Framework Components
* [Symfony2 Components](http://symfony.com/doc/master/components/index.html) - The components that make Symfony2.
* [Zend Framework 2 Components](https://packages.zendframework.com/) - The components that make ZF2.
* [Aura Components](http://auraphp.github.com/) - A package of PHP 5.4 components.
## Micro Frameworks
* [Silex](http://silex.sensiolabs.org/) - A micro framework built around Symfony2 components.
* [Silex Skeleton](https://github.com/fabpot/Silex-Skeleton) - A skeleton for Silex.
* [Slim](http://www.slimframework.com/) - Another simple micro framework.
* [Bullet PHP](http://bulletphp.com/) - A mico framework for building REST APIs.
## Templating
* [Twig](http://twig.sensiolabs.org/) - A comprehensive templating language.
* [Twig Cache Extension](https://github.com/asm89/twig-cache-extension) - A template fragment cache library for Twig.
* [Mustache](https://github.com/bobthecow/mustache.php) - A PHP implementation of the Mustache template language.
* [Phly Mustache](https://github.com/weierophinney/phly_mustache) - Another PHP implementation of the Mustache template language.
* [MtHaml](https://github.com/arnaud-lb/MtHaml) - A PHP implementation of the HAML template language.
* [Lex](https://github.com/pyrocms/lex) - A lightweight template parser.
## HTTP
* [Guzzle](http://guzzlephp.org/) - A HTTP client.
* [Buzz](https://github.com/kriswallsmith/Buzz) - Another HTTP client.
* [Goutte](https://github.com/fabpot/Goutte) - A simple web scraper.
## URL
* [Purl](https://github.com/jwage/purl) - A URL manipulation library.
* [PHP Domain Parser](https://github.com/jeremykendall/php-domain-parser) - A domain suffix parser library.
## Email
* [SwiftMailer](http://swiftmailer.org/) - A mailer solution.
* [PHPMailer](https://github.com/PHPMailer/PHPMailer) - Another mailer solution.
* [Fetch](https://github.com/tedivm/Fetch) - An IMAP library.
* [Email Reply Parser](https://github.com/willdurand/EmailReplyParser) - An email reply parser library.
## Dependency Injection
* [Pimple](http://pimple.sensiolabs.org/) - A tiny dependency injection container.
* [Auryn](https://github.com/rdlowrey/Auryn) - Another dependency injection container.
* [Di](https://github.com/orno/di) - Another flexible dependency injection container.
* [PHP DI](http://mnapoli.github.com/PHP-DI/) - A dependency injection implementation using annotations.
## Imagery
* [Imagine](http://imagine.readthedocs.org/en/latest/index.html) - An image manipulation library.
* [PHP Image Workshop](https://github.com/Sybio/ImageWorkshop) - Another image manipulation library.
* [GIF Frame Extractor](https://github.com/Sybio/GifFrameExtractor) - A library to extract GIF animation frame information.
* [GIF Creator](https://github.com/Sybio/GifCreator) - A library to create GIF animations from multiple images.
## Testing
* [PHPUnit](https://github.com/sebastianbergmann/phpunit) - A unit testing framework.
* [RunkitTestCase](https://github.com/kherge/RunkitTestCase) - A library for creating PHPUnit test cases that use runkit.
* [ParaTest](https://github.com/brianium/paratest) - A parallel testing library for PHPUnit.
* [PHPSpec](https://github.com/phpspec/phpspec2) - A design by specification unit testing library.
* [Codeception](https://github.com/Codeception/Codeception) - A full stack testing framework.
* [Atoum](https://github.com/atoum/atoum) - A simple testing library.
* [Mockery](https://github.com/padraic/mockery) - A mock object library for testing.
* [Phake](https://github.com/mlively/Phake) - Another mock object library for testing.
* [Parody](https://github.com/dotink/Parody) - Yet another mock object library for testing.
* [Sismo](http://sismo.sensiolabs.org/) - A continuous testing server library.
* [Faker](https://github.com/fzaninotto/Faker) - A fake data generator library.
* [Alice](https://github.com/nelmio/alice) - An expressive fixture generation library.
* [Behat](http://behat.org/) - A Behaviour Driven Development framework.
* [Mink](http://mink.behat.org/) - Web acceptance testing.
## Documentation
* [Sami](https://github.com/fabpot/Sami) - An API documentation generator.
* [PHP Documentor 2](https://github.com/phpDocumentor/phpDocumentor2) - Another documentation generator.
## Security
* [HTML Purifier](https://github.com/ezyang/htmlpurifier) - A standards compliant HTML filter.
* [RandomLib](https://github.com/ircmaxell/RandomLib) - A library for generating random numbers and strings.
* [SecurityMultiTool](https://github.com/padraic/SecurityMultiTool) - A PHP security library.
* [Password Compat](https://github.com/ircmaxell/password_compat) - A compatibility library for the new PHP 5.5 password functions.
* [BCrypt](https://github.com/kherge/Bcrypt) - A BCrypt password hashing library.
* [PHPAss](http://www.openwall.com/phpass/) - A portable password hashing framework.
* [PHP Password Lib](https://github.com/ircmaxell/PHP-PasswordLib) - A library for generating and validating passwords.
* [Password Policy](https://github.com/ircmaxell/password-policy) - A password policy library for PHP and JavaScript.
* [PHPSecLib](http://phpseclib.sourceforge.net/) - A pure PHP secure communications library.
* [TCrypto](https://github.com/timoh6/TCrypto) - A simple encrypted key-value storage library.
## Build Tools
* [Go](https://github.com/herrera-io/php-go) - A simple PHP build tool.
* [Bob](https://github.com/CHH/bob) - A simple project automation tool.
* [Phake](https://github.com/jaz303/phake) - A rake PHP clone library.
* [Box](https://github.com/kherge/Box) - A utility to build PHAR files.
## Asset Management
* [Assetic](https://github.com/kriswallsmith/assetic) - An asset manager pipeline library.
* [Pipe](https://github.com/CHH/pipe) - Another asset manager pipeline library.
* [Munee](https://github.com/meenie/munee) - An asset optimiser library.
* [JShrink](https://github.com/tedivm/JShrink) - A JavaScript minifier library.
## Geolocation
* [GeoCoder](http://geocoder-php.org/) - A geocoding library.
* [GeoTools](https://github.com/toin0u/Geotools) - A library of geo-related tools.
## Date and Time
* [Carbon](https://github.com/briannesbitt/Carbon) - A simple DateTime API extension.
* [Datum](https://github.com/dandoescode/datum) - A fork of the Carbon DateTime API extension.
* [ExpressiveDate](https://github.com/jasonlewis/expressive-date) - Another DateTime API extension.
* [CalendR](http://yohan.giarel.li/CalendR) - A calendar management library.
## Event
* [React](https://github.com/reactphp/react) - An event driven non-blocking I/O library.
* [Ratchet](https://github.com/cboden/Ratchet) - A web socket library.
* [Événement](https://github.com/igorw/evenement) - An event dispatcher library.
* [FuelPHP Event](https://github.com/fuelphp/event) - Another event dispatcher library.
## Logging
* [Monolog](https://github.com/Seldaek/monolog) - A comprehensive logger.
## Payment
* [OmniPay](https://github.com/adrianmacneil/omnipay) - A framework agnostic multi-gateway payment processing library.
## PDF
* [Snappy](https://github.com/KnpLabs/snappy) - A PDF and image generation library.
* [WKHTMLToPDF](https://github.com/antialize/wkhtmltopdf) - A tool to convert HTML to PDF.
## ORM and Datamapping
* [Doctrine](http://www.doctrine-project.org/) - A comprehensive DBAL and ORM.
* [Doctrine Migrations](http://docs.doctrine-project.org/projects/doctrine-migrations/en/latest/toc.html) - A migration library for Doctrine.
* [Doctrine Extensions](https://github.com/l3pp4rd/DoctrineExtensions) - A collection of Doctrine behavioural extensions.
* [Propel](http://www.propelorm.org/) - A fast ORM.
* [Spot](https://github.com/vlucas/Spot) - A MySQL datamapper ORM.
* [Migrations](https://github.com/icomefromthenet/Migrations) - A migration management library.
* [Phinx](https://github.com/robmorgan/phinx) - Another database migration library.
* [Entities](https://github.com/kherge/Entities) - A Doctrine ORM service provider for Silex.
## NoSQL
* [MongoQB](https://github.com/alexbilbie/MongoQB) - A MongoDB query builder library.
* [Monga](https://github.com/FrenkyNet/Monga) - A MongoDB abstraction library.
* [Predis](https://github.com/nrk/predis) - A feature complete Redis library.
## Command Line
* [Boris](https://github.com/d11wtq/boris) - A tiny PHP REPL.
* [GetOpt](https://github.com/ulrichsg/getopt-php) - A command line opt parser.
* [OptParse](https://github.com/CHH/optparse) - Another command line opt parser.
* [Commando](https://github.com/nategood/commando) - Another simple command line opt parser.
* [Elf](https://github.com/kherge/Elf) - A collection of helpers for the Symfony Console component.
* [Amend](https://github.com/kherge/Amend) - A Symfony Console helper and command set for updating and upgrading applications.
* [Cron Expression](https://github.com/mtdowling/cron-expression) - A library to calculate cron run dates.
* [ShellWrap](https://github.com/MrRio/shellwrap) - A simple command line wrapper library.
## Authentication
* [Sentry](https://github.com/cartalyst/sentry) - A framework agnostic authentication & authorisation library.
* [Sentry Social](http://docs.cartalyst.com/sentry-social-2/introduction) - A library for social network authentication.
* [OPAuth](https://github.com/uzyn/opauth) - A multi-provider authentication framework.
## OAuth
* [OAuth2](https://github.com/lncd/OAuth2) - An OAuth2 authentication server, resource server and client library.
* [PHP oAuthLib](https://github.com/Lusitanian/PHPoAuthLib) - Another OAuth library.
* [TwitterOAuth](https://github.com/ruudk/twitteroauth) - A Twitter OAuth library.
## Markup
* [Decoda](http://milesj.me/code/php/decoda) - A lightweight markup parser library.
* [PHP Markdown](https://github.com/michelf/php-markdown) - A markdown parser library.
* [Dflydev Markdown](https://github.com/dflydev/dflydev-markdown) - Another markdown parser library.
## Text and Numbers
* [ANSI to HTML5](https://github.com/sensiolabs/ansi-to-html) - An ANSI to HTML5 convertor library.
* [Patchwork UTF-8](https://github.com/nicolas-grekas/Patchwork-UTF8) - A portable library for working with UTF-8 strings.
* [Numbers PHP](https://github.com/powder96/numbers.php) - A library for working with numbers.
* [Math](https://github.com/moontoast/math) - A library for working with large numbers.
* [Color Jizz](https://github.com/mikeemoo/ColorJizz-PHP) - A library for manipulating and converting colours.
* [UUID](https://github.com/ramsey/uuid) - A library for generating UUIDs.
* [Slugify](https://github.com/cocur/slugify) - A library to convert strings to slugs.
## Filtering and Validation
* [Filterus](https://github.com/ircmaxell/filterus) - A simple PHP filtering library.
* [Respect Validate](https://github.com/Respect/Validation) - A simple validation library.
* [Valitron](https://github.com/vlucas/valitron) - Another validation library.
* [Upload](https://github.com/codeguy/Upload) - A library for handling file uploads and validation.
## REST and API
* [Hateoas](https://github.com/willdurand/Hateoas) - A HATEOAS REST web service library.
* [HAL](https://github.com/blongden/hal) - A Hypertext Application Language (HAL) builder library.
## Caching
* [Cache](https://github.com/doctrine/cache) - A caching library (part of Doctrine).
* [Stash](https://github.com/tedivm/Stash) - Another library for caching.
## Data Structure
* [Ardent](https://github.com/morrisonlevi/Ardent) - A library of data structures.
* [PHP Collections](https://github.com/schmittjoh/php-collection) - A simple collections library.
## Miscellaneous
* [Spork](https://github.com/kriswallsmith/spork) - A process forking library.
* [JSON Lint](https://github.com/Seldaek/jsonlint) - A JSON lint utility.
* [KnpMenu](https://github.com/KnpLabs/KnpMenu) - A menu library.
* [Gaufrette](https://github.com/KnpLabs/Gaufrette) - A filesystem abstraction layer.
* [Pagerfanta](https://github.com/whiteoctober/Pagerfanta) - A pagination library.
* [Ruler](https://github.com/bobthecow/Ruler) - A simple stateless production rules engine.
* [Serializer](https://github.com/schmittjoh/serializer) - A library for serialising and de-serialising data.
* [LiteCQRS](https://github.com/beberlei/litecqrs-php) - A CQRS (Command Query Responsibility Separation) library.
* [S3 Stream Wrapper](https://github.com/gwkunze/S3StreamWrapper) - A stream wrapper library for Amazon S3.
* [Wisdom](https://github.com/kherge/Wisdom) - A library for loading config data.
* [Sslurp](https://github.com/EvanDotPro/Sslurp) - A library that makes dealing with SSL suck less.
* [Streamer](https://github.com/fzaninotto/Streamer) - A simple object-orientated stream wrapper library.
* [PHP Option](https://github.com/schmittjoh/php-option) An option type library.
* [Metrics](https://github.com/beberlei/metrics) - A simple metrics API library.
* [Sabre VObject](https://github.com/evert/sabre-vobject) - A library for parsing VCard and iCalendar objects.
* [Annotations](https://github.com/doctrine/annotations) - An annotations library (part of Doctrine).
* [PHP File Locator](https://github.com/herrera-io/php-file-locator) - A library for locating files in large projects.
* [Elastica](https://github.com/ruflin/Elastica) - A client library for [Elastic Search](http://www.elasticsearch.org/).
* [Whoops](https://github.com/filp/whoops) - A pretty error handling library.
* [Finite](http://yohan.giarel.li/Finite) - A simple PHP finite state machine.
* [LadyBug](https://github.com/raulfraile/Ladybug) - A dumper library.
* [Plum](https://github.com/aerialls/Plum) - A deployer library.
* [Procrastinator](https://github.com/lstrojny/Procrastinator) - A library for running time consuming tasks.
* [Compose](https://github.com/igorw/compose) - A function composition library.
* [Nod](https://github.com/filp/nod) - A notification library (e.g. Growl).
## Official APIs
* [Amazon Web Service SDK](https://github.com/aws/aws-sdk-php) - The official PHP AWS SDK library.
* [Stripe](https://github.com/stripe/stripe-php) - The official Stripe PHP library.
* [Campaign Monitor](http://campaignmonitor.github.com/createsend-php/) - The official Campaign Monitor PHP library.
## Utilities
* [HomeBrew](http://mxcl.github.com/homebrew/) - A package manager for OSX.
* [HomeBrew PHP](https://github.com/josegonzalez/homebrew-php) - A PHP tap for HomeBrew.
* [PHP Brew](https://github.com/c9s/phpbrew) - A PHP version manager and installer.
* [PHP Env](https://github.com/CHH/phpenv) - Another PHP version manager.
* [PHP Switch](https://github.com/jubianchi/phpswitch) - Another version manager.
* [PHP Build](https://github.com/CHH/php-build) - Another PHP version installer.
* [PHP CS Fixer](https://github.com/fabpot/PHP-CS-Fixer) - A coding standard fixer library.
* [PHP Parser](https://github.com/nikic/PHP-Parser) - A PHP parser written in PHP.
* [PHP Manipulator](https://github.com/schmittjoh/php-manipulator) - A library for analysing and modifying PHP Source Code.
* [PHP Analyser](https://github.com/scrutinizer-ci/php-analyzer) - A library for analysing PHP code to find bugs and errors.
* [PHP Refactoring Browser](https://github.com/QafooLabs/php-refactoring-browser) - A command line utility for refactoring PHP code.
* [Zend Optimizer Plus](https://github.com/zend-dev/ZendOptimizerPlus) - A Zend engine opcode cacher and optimiser.
* [PHP Queue](https://github.com/CoderKungfu/php-queue) - An application for managing queueing backends.
* [PHPPHP](https://github.com/ircmaxell/PHPPHP) - A PHP VM implementation in PHP.
* [PHPSandbox](https://github.com/fieryprophet/php-sandbox) - A PHP sandbox environment.
* [PHPStack](http://dunkels.com/adam/phpstack/) - A TCP/IP stack proof of concept written in PHP.
* [SensioLabs Security Check](https://security.sensiolabs.org/) - A web tool to check your Composer dependecies for security advisories.
* [Scrutinizer](https://scrutinizer-ci.com/) - A web tool to scrutinise PHP code.
* [DBV](http://dbv.vizuina.com/) - A database version control application.
* [Travis CI](https://travis-ci.org/) - A continuous integration platform.
* [Country List](https://github.com/umpirsky/country-list) - A list of all countries with names and ISO 3166-1 codes.
# Resources
* [PHP The Right Way](http://www.phptherightway.com/) - A PHP best practice quick reference guide.
* [PHP Best Practices](http://phpbestpractices.org/) - A PHP best practice guide.
* [PHP Weekly](http://phpweekly.info/archive/) - A weekly PHP newsletter.
* [PHP Security](http://phpsecurity.readthedocs.org/en/latest/index.html) - A guide to PHP security.
* [PHP Standards Working Group](https://groups.google.com/group/php-standards) - The PHP standards working group.
* [The Open Web Application Security Project (OWASP)](https://www.owasp.org/index.php/Main_Page) - An open software security community.
* [WebSec IO](http://websec.io/) - A web security community resource.
* [Web Advent](http://webadvent.org) - An advent calendar for web developers.
* [Programming with Anthony](http://www.youtube.com/playlist?list=PLM-218uGSX3DQ3KsB5NJnuOqPqc5CW2kW) - A video series by Anthony Ferrara.
## E-Books
* [Scaling PHP Applications](http://www.scalingphpbook.com) - A paid ebook about scaling PHP applications by Steve Corona.
* [Grumpy PHPUnit](https://leanpub.com/grumpy-phpunit) - A book about unit testing with PHPUnit by Chris Hartjes.
## Reading
* [OWASP PHP Security Cheat Sheet](https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet) - A PHP security cheatsheet.
* [Seven Ways to Screw Up BCrypt](http://blog.ircmaxell.com/2012/12/seven-ways-to-screw-up-bcrypt.html) - An article about correct BCrypt implementation.
* [Preventing CSRF Attacks](http://blog.ircmaxell.com/2013/02/preventing-csrf-attacks.html) - An article on preventing CSRF attacks.
* [Print vs Echo, Which One is Faster?](http://fabien.potencier.org/article/8/print-vs-echo-which-one-is-faster) - An article about print and echo performance.
* [The PHP Ternary Operator. Fast or Not?](http://fabien.potencier.org/article/48/the-php-ternary-operator-fast-or-not) - An article ternary performance.
* [On PHP 5.3, Lamda Functions and Closures](http://fabien.potencier.org/article/17/on-php-5-3-lambda-functions-and-closures) - An article about lambda functions and closures.
* [Use Env](http://seancoates.com/blogs/use-env) - An article about using the unix environment helper.
* [Disproving the Single Quotes Myth](http://nikic.github.com/2012/01/09/Disproving-the-Single-Quotes-Performance-Myth.html) - An article about performance of single and double quoted strings.
* [You're Being Lied To](http://blog.golemon.com/2007/01/youre-being-lied-to.html) - An article about internal ZVALs.
* [How Long is a Piece of String](http://blog.golemon.com/2006/06/how-long-is-piece-of-string.html) - An article about string internals.
* [Understanding OpCodes](http://blog.golemon.com/2008/01/understanding-opcodes.html) - An article about opcodes.
* [How Foreach Works](http://stackoverflow.com/questions/10057671/how-foreach-actually-works/14854568#14854568) - A detailed StackOverflow answer about foreach.
* [When Does Foreach Copy?](http://nikic.github.com/2011/11/11/PHP-Internals-When-does-foreach-copy.html) - An article about the internals of foreach.
* [How Big Are PHP Arrays (And Values) Really?](http://nikic.github.com/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html) - An article about array internals.
* PHP Source Code for Developers: [1](http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers.html) [2](http://nikic.github.com/2012/03/16/Understanding-PHPs-internal-function-definitions.html) [3](http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers_21.html) [4](http://nikic.github.com/2012/03/28/Understanding-PHPs-internal-array-implementation.html) - A series about the PHP source code.
* Collecting Garbage: [1](http://derickrethans.nl/collecting-garbage-phps-take-on-variables.html) [2](http://derickrethans.nl/collecting-garbage-cleaning-up.html) [3](http://derickrethans.nl/collecting-garbage-performance-considerations.html) - A series about the PHP garbage collection internals.
* [Semantic Versioning](http://semver.org/) - A website explaining semantic versioning.
* [Composer Primer](http://daylerees.com/composer-primer) - A Composer primer.
* [Composer Versioning](https://igor.io/2013/01/07/composer-versioning.html) - An article about Composer versioning.
* [Composer Stability Flags](https://igor.io/2013/02/07/composer-stability-flags.html) - An article about Composer stability flags.
* [PHP Sucks! But I Like It!](http://blog.ircmaxell.com/2012/04/php-sucks-but-i-like-it.html) - An article about the pros and cons of PHP.
* [PHP Is Much Better Than You Think](http://fabien.potencier.org/article/64/php-is-much-better-than-you-think) - An article about the PHP lanaguage and ecosystem.
* [Innocent Villagefolk or a Pillagin Pirate?](http://blog.astrumfutura.com/2012/04/php-innocent-villagefolk-or-a-pillagin-pirate/) - An article about PHP taking ideas from other language.
* [Predicting Random Numbers in PHP](http://blog.astrumfutura.com/2013/03/predicting-random-numbers-in-php-its-easier-than-you-think/) - An article about generating random numbers.
* [C is for Cookie, H is for Hacker](http://www.troyhunt.com/2013/03/c-is-for-cookie-h-is-for-hacker.html) - An article about cookies and security.
* [A 20 Point List for Preventing XSS in PHP](http://blog.astrumfutura.com/2013/04/20-point-list-for-preventing-cross-site-scripting-in-php/) - An article about preventing XSS.